|
STM32CubeMX—串口空闲中断+DMA接收 1)、串口一配置。 

2)、开启中断模式 
3)、生成工程代
5 v! s# k* Q' D. l- Q8 P9 x ) t: T& p3 p2 K8 L# U
: F4 \, D# l; j* b# _$ u
在stm32g0xx_it.c中添 - <p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px">uint8_t recv_end_flag=0;</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px">void USART1_IRQHandler(void)( K$ f! \2 E( j; C4 {4 E0 p. E1 k/ O. K
- {9 O0 U( J; i/ f$ ]5 U7 Z$ [; I$ W
- /* USER CODE BEGIN USART1_IRQn 0 */! V$ D3 J" M% Z: o7 ^8 t
- recv_end_flag = 1;
! K% u9 n% Q3 m6 a1 y - __HAL_UART_CLEAR_IDLEFLAG(&huart1);7 O, Q4 K4 C, y' s
- /* USER CODE END USART1_IRQn 0 */, x" w8 s: O. w! r, l0 `
- HAL_UART_IRQHandler(&huart1);9 J* p4 j3 h* C) ^8 P p
- /* USER CODE BEGIN USART1_IRQn 1 */</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px"> /* USER CODE END USART1_IRQn 1 */</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px">}</font></font></font></p>
复制代码 0 X, {- u8 ?; ^/ o" u* x5 p2 x
在main.c中加上 - <p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px">#include"stm32g0xx_it.h"</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px">extern uint8_t recv_end_flag;</font></font></font></p>
, d# g" l" E: _" f+ k - <p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px">MX_GPIO_Init();
9 ?; l9 s2 ]/ { ]( m9 D1 b% m+ q' ? - MX_DMA_Init();
# z8 }8 x1 ^4 B+ l Z+ [9 a - MX_ADC1_Init();
) b. x! M2 ^- W, u) K5 _# X - MX_USART1_UART_Init();) d; F/ x5 p6 O3 D
- /* USER CODE BEGIN 2 */
2 J$ t9 c# }$ f+ J" I w - __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);
2 `% Z3 f) x+ j5 t, |8 ? - HAL_UART_Receive_DMA(&huart1,rx_buffer,sizeof(rx_buffer));
0 j8 f+ q8 y) o: M - /* USER CODE END 2 */</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px"> /* Infinite loop */7 J3 t2 {) p0 K7 I/ ?
- /* USER CODE BEGIN WHILE */
# q i4 _5 u" ?* q4 Q# n( R) E - while (1)
$ V0 Y) ^+ m0 q2 u$ d - {</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px"> HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_RESET);( n" P# R0 x" v# w" @! J1 i) [
- HAL_Delay(200);
& u* A' j5 c- O6 K: Q) Y# U - HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_SET);</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px"> HAL_Delay(200);
" E5 q& v1 o' |- l7 s) U9 j c - if(recv_end_flag ==1){
2 I" [$ t# X7 h, Z$ g/ d# P
6 m* }- E7 q: K3 K- }8 K" |0 K3 l% E g+ P% g+ P5 d
- /* USER CODE END WHILE */</font></font></font></p><p style="line-height: 26px;"><font color="rgb(77, 77, 77)"><font face="-apple-system, " "=""><font style="font-size: 16px"> /* USER CODE BEGIN 3 */. p5 F! C I$ e" ]6 g& I0 F
- }
2 ^3 ]# [: A0 L - /* USER CODE END 3 */7 O; d( H5 W1 Z6 `/ o" Y0 N) o
- }</font></font></font></p>
复制代码
7 ?/ {$ c% y0 w( }' \3 ?' P$ O% K0 R" s7 H% M& h4 `0 A
|