STMCU小助手
发布时间:2022-12-16 13:00
2.cubumx配置串口,如下图4 f( r) v# V! _
. q3 n3 k e8 l' q$ E3 \9 g- P: p 3.配置DMA 2 k* t# m/ s3 T' _& _- G
* ` h4 ~2 R9 }; a [. } 4.配置中断 & u5 _3 v5 K# s5 |; t( D; q, w
' e) D* Q8 P7 ~, M% ^ 5.生成代码后,添加空闲中断使能代码 __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);//使能idle中断& h* D$ ~8 ?9 q& V 7 C; f8 `6 l8 I; J1 ]% f 4 c. X ~( r' l! P9 D" n0 R' d 6.h743的DMA比较特别,他有几个内存区,默认的内存区与DMA不相连,所以定义buf的时候要定义到与DMA相连的地址上 / o2 G: |+ P6 U9 [* R
( K5 V, K5 K$ i6 H- b$ s! ]
7.所以修改工程下的stm32h743xx_flash.icf文件,添加如何下画圈部分" i) r+ u2 T0 y) r: i ( Q5 J2 d- Q( J, ]# E& N
: @+ I6 v! ]: [( j, A' { 8.定义buf时这样定义: ( [+ d8 g# ~$ k( w3 h
9.串口DMA发送代码: / \( A7 f2 A( ]5 M4 a* g+ p' q/ u if(HAL_UART_Transmit_DMA(&huart1,cbuffer,csize) != HAL_BUSY) 10.串口中断接收代码 ( ]+ @; `. P8 H: \ HAL_UART_Receive_IT(&huart1, cbuffer, RX_BUF_SIZE);$ w7 t+ }: x8 k' X 11.中断处理 ) C" l5 f; _8 M
, J8 M0 O8 r/ |1 J 12. usart1_Rx() ,usart1_Tx() 为加入了环形队列的发送接收接口函数; R% v; ?) k4 J% y. d* G% W* s) `2 p h. U' a5 g8 E* o( R; ^" L 13.中断中不能调用ucosii先关的函数,例如信号量的处理等,加了暴力测试串口时会出错,查了下貌似和内核管理中断有关,这个玩意CPU_CFG_KA_IPL_BOUNDARY。但也尝试了中断加OSIntEnter() 和OSIntExit(),修改中断号范围>CPU_CFG_KA_IPL_BOUNDARY, 也不行。 ———————————————— 版权声明:鱼入大海_ 8 m7 V5 f) ^2 c' ^; z5 U |
STM32C542RC开发板的串口不定长数据接收实验
STM32C542RC开发板的串口DMA发送及接收实验
终于完成了STM32C542RC开发板的串口发送实验
【 逢7发帖赢大礼】1、利用CubeMX生成正点原子H7R7开发板的STM32CubeIDE工程
【STM32H735G-DK测评】ADC3+TIMER1+DMA 采样模拟信号
【STM32H735DK测评】Ethernet+lwip DHCP获取IP地址
STM32H743基于CubeMx5.0配置手册
【STM32H735G-DK测评】lvgl移植
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
STM32L562DK探索板——串口通讯的再测试
微信公众号
手机版