关于CH582M TMOS中使用ADC中断模式数据采集异常的问题

现象:

1、官方ADC例程无任何问题。

2、非中断模式:TMOS 中创建一个 1秒钟循环的 task,在其中用 ADC_ExcutSingleConver() 函数读取电压值,也无问题。

1673055807713.png

1673055732011.png

3、中断模式:TMOS 中创建一个 1秒钟循环的 task,在其中用ADC_StartUp()启动一次转换,然后ADC中断函数ADC_IRQHandler()中ADC_ReadConverValue()读取,数值就是错误的。

1673055682389.png

问题:

1、个人怀疑是默认ADC中断优先级低于RTC中断,导致ADC中断延迟引起的。请问是否如此?

2、如果是1的原因,如何解决?更改ADC中断优先级是否可以?

1673055305391.png

如果用这个函数更改中断优先级,如果实现。谢谢!

测试查看Peripheral的例程上通过TMOS的方式添加ADC中断的方式,没有出现问题。

3.png


优先级更改例:PFIC_SetPriority(RTC_IRQn, 0x80|1);


您这个代码,是在任务中直接阻塞等待ADC采集20次,ADC中断中应该是连续采集20次。我的情况是一个1秒的task,每次启动一次ADC,然后退出任务,在ADC中断中读转换值。一秒钟采集一次。


如图修改尝试看看:

1673401589925872.png

1673401589460121.png

1673401589146476.png

1673401589121937.png



只有登录才能回复,可以选择微信账号登录