串口通信中的中断使用与优化
1. 弱符号与中断处理
在编程中,弱符号(weak symbol)是一个重要的概念。使用 .weak 指令定义的符号为弱符号。若它是普通符号,当我们尝试定义自己的 USART2_IRQHandler 时,链接器会因重复符号错误而终止。但由于它是弱符号,链接器会舍弃弱定义,使用我们提供的定义。
默认情况下,中断响应会进入无限循环,这会使机器几乎完全无法使用(不过机器仍会响应调试器和复位操作)。为了让机器更有用,我们需要编写自己的 USART2_IRQHandler 来响应特定事件。
2. 用中断方式发送字符串
2.1 全局变量的使用
在使用中断方式进行串口 I/O 时,上层(主程序)和下层(中断例程)之间通过一个全局变量进行通信:
const char* volatile usart2String = NULL; // The string we are sending
-
const修饰符表明字符数据是常量,不会被修改。 -
volatile修饰符表示该变量可能会被正常 C 程序流程之外的因素(如中断函数)随时修改。
2.2 上下层工作流程
上层(主程序)工作流程:
- 等待
usart2String <
超级会员免费看
订阅专栏 解锁全文
832

被折叠的 条评论
为什么被折叠?



