windows 串口中断编程_STM32CubeMX模块化设计举例:通过串口控制LED灯

用模块化方法重新完成EXP_USART1_Receive_IT_LED __简明指导文件

编程实现模块化设计,串口发送十六进制数字,控制LED灯亮相应秒数。例如,串口发送0x02,LED亮2秒。

(1) 配置SYS、外部晶振、时钟、GPIO(PC12标签为“LED”)

(2) 配置USART1

8d06dadb492b5ce9b89f31442b0e38ee.png

配置UART1串口通信参数

4064606443cc235e1ec74326933859be.png

配置UART1串口中断

bebec1e623b8ca141e386b557b9f330e.png

配置中断优先级

(3) 设置生成代码文件方式并生成代码

generated files中勾选第一项“Generate peripheral initialization as a pair of ‘.c/h’ files per peripgheral”

cf89094591259ed1978756b807fb4e84.png

配置代码生成模式

(4) 在固定位置添加程序

1> main.c

/* Infinite loop */

/* USER CODE BEGIN WHILE */

while (1)

{

HAL_UART_Receive_IT(&huart1,RxBuffer,1);

/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */

if(Rx_flag==1)

{

Rx_flag=0;

LED_light_delay(RxBuffer[0]);

}

}

/* USER CODE END 3 */

}

2> gpio.c

/* USER CODE BEGIN 2 */

void LED_light_delay(uint8_t time)

{

HAL_GPIO_WritePin (LED_GPIO_Port ,LED_Pin, GPIO_PIN_RESET);

HAL_Delay (time*1000);

HAL_GPIO_WritePin (LED_GPIO_Port ,LED_Pin, GPIO_PIN_SET);

}

/* USER CODE END 2 */

3> gpio.h

/* USER CODE BEGIN Prototypes */

void LED_light_delay(uint8_t time);

/* USER CODE END Prototypes */

4> usart.c

/* USER CODE BEGIN 0 */

uint8_t RxBuffer[1];

uint8_t Rx_flag;

/* USER CODE END 0 */

/* USER CODE BEGIN 1 */

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)

{

if(UartHandle->Instance == USART1) //首先判断是否是USART1的中断

{

Rx_flag=1;

HAL_UART_Receive_IT(&huart1,RxBuffer,1); //启动下一次接收

}

}

/* USER CODE END 1 */

5> usart.h

/* USER CODE BEGIN Private defines */

extern uint8_t RxBuffer[1];

extern uint8_t Rx_flag;

/* USER CODE END Private defines */

/* USER CODE BEGIN Prototypes */

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle);

/* USER CODE END Prototypes */

运行结果:

可观察到,通过发送相应数字,LED对应亮起相应秒数。

**注意串口发送时发送16进制数字

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值