STM32接收特定字符串.doc_第1页
STM32接收特定字符串.doc_第2页
STM32接收特定字符串.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

STM32接收特定字符串,滤除回车符,直接得到所需字符串分配USART2用于实现此功能考虑很久,接收不打算用while(1)查询的方式实现了,浪费时钟周期,直接中断实现USART配置/*串口函数*/void USART_Configuration(void)GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure; /第1步:打开GPIO和USART部件的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);/打开GPIOA时钟 允许复用RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);/打开USART1时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);/打开USART2时钟/ 第2步:将USART Tx的GPIO配置为推挽复用模式 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_9; /Pin_2 - USART2_TX Pin_9 - USART1_TX GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);/ 第3步:将USART Rx的GPIO配置为浮空输入模式/由于CPU复位后,GPIO缺省都是浮空输入模式,因此下面这个步骤不是必须的/但是,我还是建议加上便于阅读,并且防止其它地方修改了这个口线的设置参数GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_10;/Pin_3 - USART2_RX Pin_10 - USART1_RX GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure); / 第4步:配置USART 数据格式、波特率等参数/ - BaudRate = 115200 baud/ - Word Length = 8 Bits/ - One Stop Bit/ - No parity/ - Hardware flow control disabled (RTS and CTS signals)/ - Receive and transmit enabledUSART_InitStructure.USART_BaudRate = 115200;/USARTDIV=72000000/(115200*16)=39.0625对应误差率为0(查看参考手册)USART_InitStructure.USART_WordLength = USART_WordLength_8b;USART_InitStructure.USART_StopBits = USART_StopBits_1;USART_InitStructure.USART_Parity = USART_Parity_No;USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;USART_Init(USART1, &USART_InitStructure);USART_Init(USART2, &USART_InitStructure);/ 第5步:使能 USART, 配置完毕 USART_Cmd(USART1, ENABLE);USART_Cmd(USART2, ENABLE);/CPU的小缺陷:串口配置好,如果直接Send,则第1个字节发送不出去/如下语句解决第1个字节无法正确发送出去的问题 USART_ClearFlag(USART1, USART_FLAG_TC); /清发送外城标志,Transmission Complete flag USART_ClearFlag(USART2, USART_FLAG_TC);/USART2要与wifi通信,因此需要接收命令,这里使用串口中断接收命令NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); /配置优先级组1 NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; /先占优先级2级NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);/使能收发中断USART_ITConfig(USART2, USART_IT_RXNE, ENABLE); 我们日常所说的回车(ENTER)其实分为两步:回车:ASCII-0x0d 换行:ASCII-0x0a,接收的话必须要都滤除0x0d,0x0a,才能正常判断接收到的字符串,于是,索性接收到这两个字符串都不要,扔了就行void USART2_IRQHandler(void)uint8_t tmp;if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) /判断发生接收中断tmp = USART_ReceiveData(USART2);if(tmp=0x0d)|(tmp=0x0a)Rx_Lenght=0; Rx_flg=1; USART_ClearITPendingBit(USART2, USART_IT_RXNE); /清除中断标志elseRx_BufferRx_Lenght = tmp; Rx_Lenght+; void USART2_TX(char * str)/发送就用这种方式了,发送给模块的指令并不长,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论