三种串口接受不定长数据方法详解.doc
《三种串口接受不定长数据方法详解.doc》由会员分享,可在线阅读,更多相关《三种串口接受不定长数据方法详解.doc(4页珍藏版)》请在三一文库上搜索。
1、三种串口接受不定长数据方法详解方法1:串口接受数据,定时器来判断超时是否接受数据完成。方法2:DMA接受+IDLE中断实现思路:采用STM32F103的串口1,并配置成空闲中断IDLE模式且使能DMA接收,并同时设置接收缓冲区和初始化DMA。那么初始化完成之后,当外部给单片机发送数据的时候,假设这帧数据长度是200个字节,那么在单片机接收到一个字节的时候并不会产生串口中断,而是DMA在后台把数据默默地搬运到你指定的缓冲区里面。当整帧数据发送完毕之后串口才会产生一次中断,此时可以利用DMA_GetCurrDataCounter();函数计算出本次的数据接受长度,从而进行数据处理。应用对象:适用于
2、各种串口相关的通信协议,如:MODBUS,PPI ;还有类似于GPS数据接收解析,串口WIFI的数据接收等,都是很好的应用对象。关键代码分析:void uart_init(u32 bound);void MYDMA_Enable(DMA_Channel_TypeDef*DMA_CHx);#endifusart.C/初始化IO 串口1/bound:波特率void uart_init(u32 bound)/GPIO端口设置GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDe
3、f NVIC_InitStructure;DMA_InitTypeDef DMA_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE); /使能USART1,GPIOA时钟RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); /使能DMA传输RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);/使能USART2时钟USART_DeInit(USART1); /复位串口1/U
4、SART1_TX PA.9GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; /PA.9GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; /复用推挽输出GPIO_Init(GPIOA, /初始化PA9/USART1_RX PA.10GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;/
5、浮空输入GPIO_Init(GPIOA, /初始化PA10/Usart1 NVIC 配置NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;/抢占优先级3NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; /子优先级3NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; /IRQ通道使能NVIC_Init( /根据指定的参数初始化VIC寄存器/US
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 串口 接受 定长 数据 方法 详解
链接地址:https://www.31doc.com/p-3365899.html