stm32f103 定时中断服务函数里面能加运算程序吗?会产生其他影响吗?

2019-07-21 05:30发布

现有一个特别重要的采样计算程序(读取ads1110并计算),需要保证0.5s执行一次。

问题是,放在主函数下,用定时器time++的值作if判断语句
定时器0.1s,time++.                  主函数在while(1)下使用 if(time>=5)判断            ,不能保证时间的精确(0.5s),因为还有其他的程序运行。

现在想将这一段程序(读取ads1110并计算)放在500ms的中断服务函数里,以保证时间的精确。

不知道会不会产生其他错误?(因为一直以来都是在中断里置标志位,听说中断里计算会有影响)

stm32和ads1110之间是iic通讯。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
正点原子
1楼-- · 2019-07-21 09:55
放中断是可以的,不过,中断采集会影响其他代码的运行,如果其他代码没关系,可以被打断的话,那就这么实现即可如果其他代码也要求很高的实时性,建议分2个单片机来做,一个单片机专门实现500ms采集。另外一个做其他处理。
光域20141028
2楼-- · 2019-07-21 14:28
 精彩回答 2  元偷偷看……
anonyme
3楼-- · 2019-07-21 17:24
正点原子 发表于 2019-1-26 11:44
放中断是可以的,不过,中断采集会影响其他代码的运行,如果其他代码没关系,可以被打断的话,那就这么实现 ...

RS485_Service();/////////////////485从机程序

Can_Send_Msg();/////////can发送函数

这两个函数能被打断吗?
我改用中断计算,暂时没有发现问题

一周热门 更多>