SMT32串口使用中断 和使用 RTOS的对比
创始人
2024-05-12 10:45:35
0

用cubemx配置时钟,串口,中断和RTOS

STM32的中断在文件
stm32f1xx_it.c

其中

void USART1_IRQHandler(void)
{/* USER CODE BEGIN USART1_IRQn 0 *//* USER CODE END USART1_IRQn 0 */HAL_UART_IRQHandler(&huart1);/* USER CODE BEGIN USART1_IRQn 1 *//* USER CODE END USART1_IRQn 1 */
}

USART1 中断的服务函数 USART1_IRQHandler()
中断服务函数里面就调用了串口中断处理函数 HAL_UART_IRQHandler()
其主要作用就是判断是哪个串口产生中断,清除中断标识位,然后调用中断回调函数 HAL_UART_RxCpltCallback()。

在文件
stm32f1xx_hal_uart.c
中 有

__weak void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{/* Prevent unused argument(s) compilation warning */UNUSED(huart);/* NOTE: This function should not be modified, when the callback is needed,the HAL_UART_RxCpltCallback could be implemented in the user file*/
}

可以用户自定义。

在文件
stm32f1xx_it.c
的最下方 重写回调函数:

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{if (huart->Instance == USART1){//HAL库串口发送函数HAL_UART_Transmit(&huart1,(uint8_t *)Buffer, 1, 0xffff);//串口接收函数HAL_UART_Receive_IT(&huart1,(uint8_t *)Buffer, 1);}}

这就完成了串口中断的程序

在rots中如此定义,也可以达到类似的效果。轮询vs时间触发

void Led_Task(void const * argument)
{/* USER CODE BEGIN Led_Task *//* Infinite loop */for(;;){//HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);//HAL_UART_Receive(&huart1, (uint8_t *)Buffer, 1, 0xffff); //一次 阻塞HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0);HAL_UART_Transmit(&huart1,(uint8_t *)Buffer, 1, 0xffff);HAL_UART_Receive_IT(&huart1, (uint8_t *)Buffer, 1); //循环 非阻塞//HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);osDelay(1000);}/* USER CODE END Led_Task */
}

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...