网站首页 > 技术文章 正文
串行交互程序设计(接收和发送)
一,综合设计要求
1.开发板引出USART1端口用于串行通信,其中用于异步通信的RX,TX引脚分别映射到PA10和PA9引脚。
2. 上位机安装SecureCRT软件,可用于串行通信。
3. 试编写程序实现如下功能:
1)能通过上位机SecureCRT软件输入命令控制开发板Led灯的亮灭,如输入”红色”点亮红灯。
2)能检测按键状态、通过串口发送给上位机,并在SecureCRT软件上显示。
3)其他交互操作。
要求:在SecureCRT软件上显示完善的交互提示信息。
二,USART主要特性
3个USART:USART1挂载于APB2高速总线,USART2 ,USART3挂载于APB1总线
2个UART:UART4,UART5挂载于APB1总线
可编程数据字长度(8位或9位)
分数波特率发生器系统,最高达4.5Mbits/s
可配置的停止位-支持1或2个停止位
LIN通信(局域互联网)
IRDA SIR 编码器解码器(红外通讯)
智能卡模拟功能
可配置的使用DMA的多缓冲器通信
三,USART引脚
四,USART结构
五,GPIO配置
GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOA, &GPIO_InitStructure);
六,工作模式设置
七,串口初始化
void USART1_Configration() { USART_InitTypeDef USART_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1 ,ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); USART_InitStructure.USART_BaudRate = 115200; 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_Cmd(USART1, ENABLE); }
八,串口接收和发送
- 串口数据发送
int fputc (int ch,FILE *f) { USART_SendData(USART1,(uint8_t)ch); while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET); return (ch); }
2.串口数据接收
int fgetc(FILE *f)
{
while(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==RESET);
return (int)USART_ReceiveData(USART1);
}
九,串口工具
1.下载
2.完成配置
查看端口号
串口设置
注意:波特率一定要和配置一样的才可以
十,效果展示
- 接收字符串
int main(void) { char keytemp; unsigned char buff[200]; GPIO_Configration(); USART1_Configration(); Delay(0x01000000); printf("?òê???è?í·ì?′ó?§\r\n"); printf("Please open the light \r\n"); printf("OK?\r\n"); }
2.发送
{ scanf("%s",buff); if(strcmp(buff,"oìé?")==0) { LEDBLUE_OFF; LEDGREEN_OFF; LEDRED_ON; printf("sucess!\r\n"); //′??úááμ?// } else if(strcmp(buff,"?ìé?")==0) { LEDRED_OFF; LEDBLUE_OFF; LEDGREEN_ON ; printf("sucess!\r\n"); } else if(strcmp(buff,"à?é?")==0) { LEDRED_OFF; LEDGREEN_OFF; LEDBLUE_ON; printf("sucess!\r\n"); } else if(strcmp(buff,"ledgreen_off")==0) { LEDGREEN_OFF; } } }
红灯
蓝灯
绿灯
全部开启成功!!!
猜你喜欢
- 2024-10-12 STM32单片机-多串口printf()问题与ASCII码解析
- 2024-10-12 stm32F0 串口的几个特殊功能 stm32f1串口引脚
- 2024-10-12 STM32串口发送用哪个中断? stm32f4串口发送数据
- 2024-10-12 STM32F103编程学习——USB虚拟串口篇
- 2024-10-12 STM32F4入坑日记——串口发送数据(非中断)
- 2024-10-12 STM32 HAL库串口中断发送过程 stm32f4串口中断
- 2024-10-12 在货物监控设备研发时,STM32串口第一个字节丢失解怎么解决?
- 2024-10-12 STM32单片机采用环形缓冲区实现串口中断数据接收管理
- 2024-10-12 基于STM32的串口与DMA的完美组合(上)
- 2024-10-12 STM32下载程序新思路--使用串口下载STM32程序
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)