stm32f103接收数据帧
更多
在STM32F103中接收数据帧的实现步骤如下,以UART为例:
1. 硬件配置
- 启用UART外设(如USART1)和对应GPIO(PA9/PA10)。
- 配置参数:波特率、数据位(8位)、停止位(1位)、无奇偶校验。
- 开启接收中断(RXNEIE),并在NVIC中使能中断。
2. 接收数据帧的核心逻辑
方案1:中断接收 + 环形缓冲区
- 初始化环形缓冲区:用于临时存储接收到的原始字节。
- 中断服务函数(ISR):
void USART1_IRQHandler(void) { if (USART1->SR & USART_SR_RXNE) { uint8_t data = USART1->DR; // 读取数据 ring_buffer_push(&rx_buffer, data); // 存入环形缓冲区 } } - 主循环解析帧:
- 检查缓冲区是否有足够数据。
- 匹配帧头(如
0xAA),提取长度字段,验证校验和(如CRC)。 - 若校验通过,处理有效数据;否则丢弃。
方案2:DMA接收(适合大数据量)
- 配置DMA通道,设置为循环模式,自动将UART数据搬运到内存。
- 利用空闲中断(IDLE)检测帧结束:
void USART1_IRQHandler(void) { if (USART1->SR & USART_SR_IDLE) { USART1->SR; // 清除IDLE标志 DMA_Cmd(DMA1_Channel5, DISABLE); uint16_t len = BUFFER_SIZE - DMA_GetCurrDataCounter(DMA1_Channel5); process_frame(buffer, len); // 处理数据帧 DMA_SetCurrDataCounter(DMA1_Channel5, BUFFER_SIZE); DMA_Cmd(DMA1_Channel5, ENABLE); } }
3. 数据帧解析示例
假设帧格式:[帧头 0xAA][数据长度 N][数据...][校验和]
void parse_frame(uint8_t *data, uint16_t len) {
if (data[0] != 0xAA) return; // 验证帧头
uint8_t n = data[1]; // 数据长度
if (n + 3 > len) return; // 检查长度是否合理
// 计算校验和(示例:累加和)
uint8_t checksum = 0;
for (int i = 0; i < n + 2; i++) {
checksum += data[i];
}
if (checksum == data[n + 2]) {
// 校验通过,处理有效数据 data[2] ~ data[n+1]
}
}
4. 关键注意事项
- 超时处理:若帧长度不固定,需在中断中启动定时器,超时未收到新数据则认为帧结束。
- 临界保护:操作环形缓冲区时,关闭中断防止数据竞争。
- 错误处理:检查UART状态寄存器(如
ORE、FE),及时清除错误标志。
通过上述步骤,可实现STM32F103稳定接收并解析自定义数据帧。具体实现需根据实际帧格式和通信协议调整。
stm32f103 flash模拟eeprom
STM32F103是意法半导体(STMicroelectronics)推出的一款32位单片机系列,该系列芯片具有高性能和丰富的外设接口,广泛应用于工业控制、消费电子、汽车电子等领域。其中
2024-01-09 11:21:36
GD32F103与STM32F103的区别 2021.6.2
GD32F103和STM32F103区别介绍关键词Key words:GD32F103、
资料下载
李杰
2021-12-08 11:06:03
STM32F103单片机的串口空闲中断
的开始和结束是由空闲字符间隔时间来区分的,而STM32F103单片机自带串口空闲模式检测。 在通常情况下Modbus通信一帧数据的检测可以用时间判断,不停的去读取
2021-08-12 07:14:50
7天热门专题
换一换
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- amoled屏幕和oled区别
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机
- 元宇宙概念龙头股一览