STMCU小助手
发布时间:2022-12-16 13:00
2.cubumx配置串口,如下图 Z* e" E q9 {* t( x+ v
3.配置DMA3 R- h( U" u! M, x5 j. F 8 R4 s% ], v' p {! p2 H. w
4.配置中断
4 a/ R+ h- J" x1 ]! N( ~% y+ A2 q
5.生成代码后,添加空闲中断使能代码8 L- _7 g3 Q- F9 s% ^" g 1 {" Q% d6 r; d & n3 g+ j+ |9 C& n __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);//使能idle中断9 s# H. c# \8 t6 s; i/ G, h3 r, p) x ! {% q1 E- ~: N! G! v. ~' k7 w& } 6.h743的DMA比较特别,他有几个内存区,默认的内存区与DMA不相连,所以定义buf的时候要定义到与DMA相连的地址上 2 z" _- ]$ N( S6 A/ I; S+ E/ d
# G& N" r$ ~1 P# m" ]# V6 l, S
7.所以修改工程下的stm32h743xx_flash.icf文件,添加如何下画圈部分; J% T$ p4 ~$ \) _, ~
8.定义buf时这样定义: 5 O0 D2 s+ e% F- t/ Y
9.串口DMA发送代码:" q0 h6 B0 w7 u6 T" l 6 a+ z- s( o) j* t- Z8 s c% P if(HAL_UART_Transmit_DMA(&huart1,cbuffer,csize) != HAL_BUSY)6 l, A& h/ ^6 c 10.串口中断接收代码% Q8 u5 [7 ~# t- v9 S3 S HAL_UART_Receive_IT(&huart1, cbuffer, RX_BUF_SIZE);. g9 M" v9 d7 b9 a& |/ \: P 11.中断处理
12. usart1_Rx() ,usart1_Tx() 为加入了环形队列的发送接收接口函数 F' y' `7 k) I6 M) p& E B + L+ `$ z/ a$ W; `, B: h3 [ 13.中断中不能调用ucosii先关的函数,例如信号量的处理等,加了暴力测试串口时会出错,查了下貌似和内核管理中断有关,这个玩意CPU_CFG_KA_IPL_BOUNDARY。但也尝试了中断加OSIntEnter() 和OSIntExit(),修改中断号范围>CPU_CFG_KA_IPL_BOUNDARY, 也不行。. B2 ^, b9 k$ O( e/ J8 o: q7 h/ V- V& y ———————————————— 版权声明:鱼入大海_9 f0 |1 q9 w) w' m4 Z! W0 ~1 J 6 U1 ^# P P1 }: m) o : }" ]- k M/ H9 {. b1 {* C |
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探索板——串口通讯的再测试
微信公众号
手机版