STMCU小助手
发布时间:2022-9-5 22:31
|
硬件准备 这里准备了GD32303C_START开发板进行验证。 0 L2 N5 m3 B" `
/ _2 K" w& z0 _, |6 B- A$ l6 J3 D6 L STM32CUBEMX配置# V8 W8 K& N* P* S# m6 @
0 m- q5 B+ ^8 {; k: m; A- L 勾选中断。
/ P. _; x2 N+ n$ v 6 w! M( o* K5 V' A3 \6 p keil配置6 Y- Z3 ~$ O6 Z# [7 r microlib 进行了高度优化以使代码变得很小。 它的功能比缺省 C 库少,并且根本不具备某些 ISO C 特性。 某些库函数的运行速度也比较慢,如果要使用printf(),必须开启。 ' X- p1 T$ X6 `) X
串口接收发送函数' A' v1 F! S" X 一般情况下,串口接收发送函数有如下所示。 ● HAL_UART_Transmit();串口轮询模式发送,使用超时管理机制。 ● HAL_UART_Receive();串口轮询模式发送,使用超时管理机制。 ● HAL_UART_Transmit_IT();串口中断模式发送' m1 c% b2 ]' x Z ● HAL_UART_Receive_IT();串口中断模式接收 ● HAL_UART_Transmit_DMA();串口DMA模式发送 ● HAL_UART_Receive_DMA();串口DMA模式接收 HAL_UART_Transmit()发送 t. f8 ^% K$ o x: a 通过轮询,将数据发送出去。
演示结果如下所示。 # o3 j2 ?! U5 q8 r$ E. L
! e3 Y! [' e2 \9 f( T HAL_UART_Transmit_IT()发送3 T" F7 B. Z4 B x 通过中断模式发送,这个模式下需要开启串口中断,否则无法发出数据。: [( d( S2 G$ \
上述代码中,可以不使用while进行等待也可以发送,但是需要注意不能未发送完毕又重新发送。 演示结果如下所示。6 E4 I, W& t( m' J# _ 2 x6 v! h2 j& ^& X5 z6 A# b' W
' c5 o& m2 n! M/ M4 B+ t6 ? HAL_UART_Transmit()和HAL_UART_Transmit_IT()对比! v4 y8 h2 j& L 若HAL_UART_Transmit_IT()不使用while进行等待,他的波形图如下所示。# ?9 F% C* e3 c2 k6 M, X/ A 黄色线为波形,红色线为发送后的电平翻转。, ]( j8 ?# e- E V' E3 M8 y# S5 w% s
, V; P6 b/ K; D HAL_UART_Transmit()发送如下所示。
; y* E' V0 Z$ G3 U. j 可以看到,HAL_UART_Transmit()发送必须要等待发送完毕才可以接着往下执行。 HAL_UART_Transmit_IT()为中断发送,可以在发送数据时候执行其他指令。- V2 q0 b0 T5 J HAL_UART_Receive()接收7 K; H4 R0 r( _ 串口轮询模式接收,使用超时管理机制。' y: s& p! J$ ] 例如接收一个10个数据。& a( V# }0 s6 w: p) d$ v6 g% u" `7 L& z , B+ v* k. Y6 A4 K: N
测试结果如下所示。
HAL_UART_Receive_IT()接收" ^7 t% ]+ C+ b' P6 g 串口中断模式接收,这样就可以不需要等待,单片机在没有数据接收时候可以进行其他工作。 例如接收一个10个数据。 定义接收数组。+ v. C' y3 O/ q9 |4 v
开启接收中断。) L6 {" r- a% P5 X0 I . {( H& ]* B+ U& [+ W6 P( V# d& H; k
读取回调函数。 4 O d' o+ q8 A3 D& g$ H3 j# n
测试结果如下。 ! w. ?0 f! d4 B3 G
HAL_UART_Receive_IT和HAL_UART_Receive的区别就是:中断接收是有数据到了才去读;直接接收是直接读取,如果超时就返回% G. B3 m! m2 y9 y! q# }( g ————————————————; E- x) {( A% b8 D9 A6 Q 版权声明:记帖 0 a- L1 K( I" L( q) ? |
【STM32H5 评测】ADC 电压表
【STM32H5 评测】基础硬件加密与随机数性能 - STM32H5E5实测硬件AES加解密、HASH运算、TRNG真随机数输出速率与稳定性
【STM32H5 评测】NUCLEO-H5E5ZJ 使用 TrustZone 安全分区系统实践测试
【STM32H5 评测】CPU核心性能 - STM32H5E5跑 RTOS,观察任务切换速度、中断响应快慢
【STM32H5 评测】介绍、环境搭建、工程测试
#双节活动 1.在CubeMX中引用touchGFX出现的问题与解决
如何将STM32CubeMX生成的CMake工程导入STM32CubeIDE
【 逢7发帖赢大礼】1、利用CubeMX生成正点原子H7R7开发板的STM32CubeIDE工程
STM32CubeCLT 1.22.0新版本发布
【下载问题解决】关于ST官网下载软件问题解决
微信公众号
手机版