STM32串口发送中断程序
STM32串口发送中断程序
更多
以下是一个基于STM32 HAL库的串口发送中断程序示例(以USART1为例):
步骤1: 初始化串口和中断
// 在main.c中
UART_HandleTypeDef huart1;
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART1_UART_Init(void);
int main(void) {
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
// 使能串口中断
HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(USART1_IRQn);
// 示例:发送字符串
char msg[] = "Hello World!\r\n";
HAL_UART_Transmit_IT(&huart1, (uint8_t*)msg, strlen(msg));
while (1) {
// 主循环
}
}
// 串口1初始化
static void MX_USART1_UART_Init(void) {
huart1.Instance = USART1;
huart1.Init.BaudRate = 115200;
huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE;
huart1.Init.Mode = UART_MODE_TX_RX;
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
HAL_UART_Init(&huart1);
}
步骤2: 中断服务函数
// 在stm32f1xx_it.c中
void USART1_IRQHandler(void) {
HAL_UART_IRQHandler(&huart1); // 调用HAL库中断处理函数
}
步骤3: 发送完成回调函数(可选)
// 在main.c中(重写弱函数)
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) {
if (huart->Instance == USART1) {
// 在此添加发送完成后的处理逻辑
// 例如:置标志位、发送下一帧数据等
}
}
发送数据函数
// 在需要发送数据的地方调用
void Send_Data(uint8_t *data, uint16_t len) {
HAL_UART_Transmit_IT(&huart1, data, len); // 中断模式发送
}
关键点说明:
-
发送机制:
HAL_UART_Transmit_IT()启动中断发送- 发送完成后自动触发
HAL_UART_TxCpltCallback
-
中断配置:
- 通过
HAL_NVIC_EnableIRQ()使能串口中断 - 中断优先级通过
HAL_NVIC_SetPriority()设置
- 通过
-
注意事项:
- 当前发送未完成时,再次调用
HAL_UART_Transmit_IT会导致错误 - 需等待前一帧发送完成(通过回调标志或
huart->gState判断) - 发送数据缓存区需在发送期间保持有效(建议使用全局/静态数组)
- 当前发送未完成时,再次调用
状态检查示例:
// 检查是否可发送新数据
if (huart1.gState == HAL_UART_STATE_READY) {
HAL_UART_Transmit_IT(&huart1, newData, newLen);
}
实际使用时需根据具体STM32型号调整:
- 替换
USART1为实际使用的串口- 在CubeMX中配置时钟和引脚
- 检查IRQHandler名称(如
UART4_IRQHandler)- 根据需求调整波特率等参数
7天热门专题
换一换
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- amoled屏幕和oled区别
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机