其他分享
首页 > 其他分享> > 关于stm2cumx生成的串口通信USART的使用(1)

关于stm2cumx生成的串口通信USART的使用(1)

作者:互联网

在stm32cumx中的设置如下

 

 

 

 

 并开启中断

初始化

 

在主函数中,这个函数完成串口初始化 

 

 这个函数先是初始化,串口通信的配置。再接着进入这个函数

 

 执行了这个函数

 这个函数则是完成了串口通信底层,硬件上的一些初始化,配置了引脚,并开启了中断

 

使能串口通信?(设置进行回调函数的条件)

 

 主函数中,上一个函数只不过是以非阻塞的方式发送了a1这个变量的值

关键是,后一个函数。定义一个字符数组Rx_dat作为缓冲区,参数Size设定为1。即每接收1个字符,就进入一次回调函数。

 没啥好说的,进入这个函数

 

设置串口对象的存储指向位置,空间大小,和接受计数count。并使能一些中断

当有数据来的时候,就需要依靠中断函数来处理了。

 

开始工作

 

 这个是串口通信的中断,生成的代码里面就一个函数,进入看看。(注意是每接收/发送一个字符进入这个中断函数(应该是这样))

这个函数挺长的的,就是一些判断啥的。图中这个指向的这个函数,是真正接收字符的函数

 

 

上面3张图,第一个箭头之前的,就是串口接收字符的实际操作。

第一个箭头的count的数值大小(根据后面两张图片可以得知,这个if里面是进行回调函数的调用),就是前面HAL_UART_Receive_IT函数里设置的的count的大小(这里我设置为1),可以看出,并不是每一次进入中断处理函数都会进行回调函数的调用(我是设置了缓存区为1,所以才会每进入中断处理函数都会调用回调函数)

若我改为HAL_UART_Receive_IT(&huart1,&RX_dat,10),则进入10次中断处理函数,才会调用1次回调函数

后面几个箭头,是几种不同事件的回调函数调用。我们要重写的是HAL_UART_RxCpltCallback这个会回调函数

同时有点要注意,图中画圈部分,既是将串口中断关闭了,就是每调用回调函数都会将串口中断关闭,得需要自己重新开启中断才行

 

重新开启串口中断,这样才可以实现多次数据返回

 

总结

标签:HAL,函数,USART,中断,串口,Receive,UART,stm2cumx
来源: https://www.cnblogs.com/KingZhan/p/15614860.html