完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
STM32的串口配置(USART1为例)
今天学习串口配置,先将自己的体会整理如下! 一、首先配置串口的Tx(发送)和Rx(接受)引脚! GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOAtiNG; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); 二、开启时钟使能(包含USART1和所使用的GPIO管脚) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1, ENABLE); 三、配置串口的相关信息(包含波特率、数据长度、停止位、奇偶校验、硬件流控制,即USART_InitTypeDef结构体的配置) USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_Init(USART1, &USART_InitStructure); 四、使能以及读状态寄存器的值 USART_Cmd(USART1, ENABLE); USART1->SR;//防止第一个字节丢失 五、添加printf的输出定向函数(刚开始我就是没有添加此函数导致printf函数不能正常工作) int fputc(int ch, FILE *f) { /* Place your implementation of fputc here */ /* e.g. write a character to the USART */ USART1->DR = (u8)ch; /* Loop until the end of transmission */ while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); return ch; } 此函数可以添加可以添加USART.C中或其他地方! 六、体会 如果不添加int fputc函数也可以(只要前四步做好了),可以使用USART的库函数(发送函数和接受函数)与电脑进行数据的通信! |
|
|
相关推荐
|
|
![]() ![]() {:1:}
|
|
|
|
|
|
|
|
762 浏览 0 评论
739 浏览 0 评论
飞凌嵌入式ElfBoard-文件I/O的了解探究之复制文件描述符
668 浏览 0 评论
飞凌嵌入式ElfBoard-文件I/O的了解探究之返回错误处理与相关函数
1448 浏览 0 评论
飞凌嵌入式ElfBoard-文件I/O的了解探究之文件描述符和FILE指针转换
1058 浏览 0 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 22:22 , Processed in 0.878900 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖