串口是一种重要的调试方式,今天我们来实现使用串口点灯的功能~ 我们以4.串口打印-接收中断为蓝本~ 同样因为我们要用到LED灯,所以添加LED相关驱动,具体操作在上一篇详细述说,这里就不再叙述。
先关注我们的第一个硬件初始化函数。
开启时钟,配置端口模式,配置串口1的模式,最后再配置串口中断。 对于大家来说,在使用串口1的时候只需要直接调用这个函数,一般是没有问题的。 顺便大家也可以先看一下串口的发送函数的实现~
对于字符串,是一个循环将指定长度len的字符串str发送到指定串口USARTx。 因为发送完成后USART_FLAG_TC标志位会硬件(自动)置位,所以这里会有一个等待,否则数据的发送会是不完整的。 至于使用%s %d等格式的串口发送,就需要用到c库里的相关函数将数据格式化成字符串,再一位一位的发出去。
而我们最重要的就数串口中断函数了~
定义了接受缓冲区为64 字节,简单的串口通信是够了的。 定义了个char类型的变量表示字符串长度,最长65535远远大于64。 而具体的内容是当串口中断被触发时,判断是接受中断后,将接受到的数据存入数组usart1Buf中,最后再清楚标志位。 其实这些库函数的内容我们都不需要关心,我们只需要关心我们的上层使用就行了。 本次我们将编写一个使用串口点灯的Demo~
每当接受到串口消息后,用strcpy函数对字符串进行比对,然后进行相应的点灯操作。
发送效果如图,加的两个横线是用于检测发送的字符串是否带前缀后缀用的。 而演示的结果就是当我们分别发送”led0 on”等指令,不同的灯亮,而发送其他字符,所有的灯都熄灭。 简单的函数串口命令交互Demo希望能帮助大家完成更好的人机交互。
|