• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

stm32的定时器time3每1us中断的话影响其他程序执行?

huihui163 2020-12-19 浏览量:3133
stm32串口中断优先级高,定时器time3中断优先级低,但是定时器每1us中断的话影响其串口解析?这是为啥
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 以115200的波特率来计算,一个字节8bit,传输时间8/115200=69.4uS。

    单片机发送和接收波形由,串口外设来保证的。

    但是我们的程序要求是在69.4uS内,必须要把串口的数据进行保存,否者就会数据丢失。


    另外在接收一个完整的数据帧之后,需要解析。这里建议把解析的程序放在主函数里面,不要在中断里解析。

    中断里面,需要把串口数据保存,到缓存即可。

    • 发布于 2020-12-23
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:7
  • 中断函数执行也要消耗时间,1us时间太短了,需要增加时间,特别是串口数据量大就会出问题
    • 发布于2020-12-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 中断函数只也是有时间的,当时间比较长时,会影响其他的程序的
    • 发布于2020-12-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 首先你的硬件晶振应该支持不到1us的定时,1us就意味着需要1000MHz的晶振。反正没听过,其次你的程序随随便便写几条指令单片机也要花个好几个1us才能执行一个周期。假设你1us一中断,那你的程序岂不是卡卡的。涉及到串口通信时就会出现收发数据异常的现象。
    • 发布于2020-12-19
    • 举报
    • 评论 2
    • 0
    • 0
STM32ZET6 回复了 提刀剁骨头 :1us是1M。。,F1的定时器时钟都有72M肯定可以 回复
huihui163 回复了 提刀剁骨头 :定时器分频1M不就可以 回复

  • 1us基本上是不可能的,中断函数随便执行一下也不得几个us呀,可以这么设置,但是实际运行效果会很差。出现函数执行时间比中断时间都长。所以最少是毫秒级别。
    • 发布于2020-12-19
    • 举报
    • 评论 0
    • 0
    • 0

  • STM32的主频一般就72M这样,1us一次中断对性能影响很大,建议放到至少100us比较合理
    • 发布于2020-12-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 你可能认为中断到达了就直接跳过去就执行了,实际上远没那么简单,中断保留现场以便中断返回后恢复程序,这个过程需要压栈与退栈,中断相应也是需要时间的,中断条件产生后,触发中断标志物、再触发中断,再到压完栈进入服务函数都是要时间的。 实际上TM32的中断性能不超过500Khz,也就说2us 1us当然会卡死了。实现功能必须考虑程序的可行性,连续周期的几毫秒的任务建议使用路。轮训
    • 发布于2020-12-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 应该是芯片主频比较低,串口速度当比较快时,1us可能会影响数据的判断与处理
    • 发布于2021-01-07
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

stm32的定时器time3每1us中断的话影响其他程序执行?