历史上的今天
返回首页

历史上的今天

今天是:2024年09月01日(星期日)

正在发生

2018年09月01日 | STM32小白入门(第六天)-------串口通信

2018-09-01 来源:eefocus

今天要讲的是串口通信,个人觉得挺重要的,以后USART、蓝牙通信,485等等都要用到串口,面试官也喜欢问一些串口的问题,比如问你串口参数,数据位几位,波特率多少,还会问你怎样设置串口等等。

一、串口概述

1. 定义

串口通信是一种设备间非常常用的串行,以比特位的形式发送或接收数据,电子工程师经常使用这种方式来调试数据。

2. 开发板硬件用于串口跟PC相连的时候有以下注意事项:

A. 使用到usb转串口,所以得安装驱动

B. 跳线帽要进行短接







二、程序设计

1、设置引脚功能复用

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //使能GPIOA时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); //使能USART1时钟

 

//串口1对应引脚复用映射

GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);//GPIOA9复用为USART1

GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);//GPIOA10复用为USART1

//USART1端口配置

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;//GPIOA9与GPIOA10

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //复用功能

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度50MHz

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉

GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化PA9,PA10

2、串口参数配置


//USART1 初始化设置

USART_InitStructure.USART_BaudRate = 9600; //波特率设置

USART_InitStructure.USART_WordLength = USART_WordLength_8b; //字长为8位数据格式

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); //初始化串口1

USART_Cmd(USART1, ENABLE);   //使能串口1 

//USART_OverSampling8Cmd(USART1,ENABLE);//在超高速的波特率才打开,如5MHz频率。正常很少有设备达到这么高的速度

3、串口中断配置


USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); //开启相关中断

//Usart1 NVIC 配置

NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; //串口1中断通道

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3; //抢占优先级3

NVIC_InitStructure.NVIC_IRQChannelSubPriority =3; //子优先级3

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能

NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化VIC寄存器

4. 发送函数的编写


void usart1_send_bytes(uint8_t *pbuf,uint32_t len)

{

while(len--)

{

USART_SendData(USART1,*pbuf++);

while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);

}

}

void usart1_send_str(char *pbuf)

{

while(pbuf && *pbuf)

{

USART_SendData(USART1,*pbuf++);

while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);

}

}

5、重定向printf函数


//重定义fputc

intfputc(int ch,FILE *f)

{

        USART_SendData(USART1,ch);

        while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);

 

        returnch;

}



推荐阅读

史海拾趣

ebm-papst公司的发展小趣事

在巩固欧洲市场的基础上,ebm-papst不断拓展全球市场,特别是亚洲市场。近年来,公司在亚洲市场的营收增长率一直保持在较高水平。为了进一步拓展亚洲市场,ebm-papst加大了在中国的产能建设,陆续在上海、西安等地进行扩建和新建产能。这些措施使得ebm-papst能够更好地满足亚洲市场的需求,并为其在全球市场的进一步发展奠定了坚实基础。

FTDI [Future Technology Devices International Ltd.]公司的发展小趣事

随着市场需求的变化,FTDI并未满足于初期的成就,而是积极拓展产品线。他们推出了如MM232R和USB-COM232-PLUS1等接口产品,这些产品在连接性和兼容性上展现了公司强大的技术实力和创新精神。同时,FTDI还涉足USB和其他通信协议的转换领域,满足了多样化的市场需求,进一步巩固了其在电子行业中的地位。

Comair Rotron公司的发展小趣事

随着电子技术的飞速发展,Comair不断投入研发,力求在技术上取得突破。在某次关键的技术研发中,公司成功开发出了一种新型高效风扇,其性能远超当时市场上的同类产品。这一技术突破为Comair赢得了更多电子行业客户的青睐,公司的市场份额也逐渐扩大。

迪一电子公司的发展小趣事

随着市场的不断变化和技术的快速发展,迪一电子公司意识到必须不断创新才能保持竞争力。于是,公司加大研发投入,引进高端技术人才,与国内外知名科研机构合作,成功研发出一系列具有竞争力的新产品。这些新产品不仅提高了公司的市场占有率,还为公司赢得了良好的口碑。

Applied Micro Circuits (MACOM)公司的发展小趣事

在经历了多次的收购与转手后,MACOM公司重新获得了独立地位,并开始了新的发展历程。公司推出了首个GaN功率器件,这一技术创新在行业内引起了广泛关注。随后,MACOM继续通过收购微波和射频公司MIMIX以及高速光通信公司Optomai来扩展其业务范围。这些举措不仅增强了公司的技术实力,也为其在全球市场上取得竞争优势奠定了基础。

思博科技(Cybermax)公司的发展小趣事

在快速发展的过程中,思博科技始终关注企业文化建设和社会责任。公司倡导“创新、协作、诚信、共赢”的价值观,为员工提供了良好的工作环境和发展机会。同时,思博科技还积极参与社会公益活动,回馈社会。这些举措不仅提升了公司的品牌形象和声誉,还增强了员工的归属感和凝聚力。

问答坊 | AI 解惑

AT89S5X写入工具

AT89S5X写入工具 [ 本帖最后由 西门 于 2009-5-12 18:48 编辑 ]…

查看全部问答>

任意波形发生器的设计

来源:电子产品世界/ 西北工业大学 航海学院 任绪科 赵俊渭 周明 引言           在电子工程设计与测试中,常常需要一些复杂的、具有特殊要求的信号,要求其波形可任意产生,频率方便可调。通常的信 ...…

查看全部问答>

ZT:现实版的杜拉拉的故事

《杜拉拉升职记好看,被公司人奉为职场宝典,很重要的一部分原因是它除了有精彩的情节,还有很多职场的“教条”,小白领们可以按图索骥,套用在现实中。现在,我们就总结几条“杜拉拉原则”,看看现实版是如何演绎的。宫斗是幻想中的情节,商斗离我 ...…

查看全部问答>

STC 片内EEPROM 应用

学单片机通常都会学到24C02这东西,但实际现在的单片机片内都有继承EEPROM 而且传输速度,容量明显都远远大于24C02这东西 但貌似用的人不大多,网上找相关例子太少了,摸着资料写了这个程序,只要是STC的单片机,大部分都通用,童鞋们只要修改相应 ...…

查看全部问答>

请教pc104+wince5.0开发

使用研华pcm-3370 pc104主板,但没找到合适的BSP,请问各位高手是否有现成的BSP?还是自己裁剪一个?望详解,100分相送,不够再加 …

查看全部问答>

思科(Cisco)招聘(上海):嵌入式,板级设计,测试

有意者请发送中英文简历(word格式)到stephan_lu2000@yahoo.com.cn Index: 1. Junior Board Designer 2. Senior Board Designer 3. Senior Test engineer or test lead 4. SW engineer 5. Sr. SW engineer Junior Board Designer Job De ...…

查看全部问答>

请问大家我在仿真的时候.OUT文件总是不能load program

我的程序在编译和连接的时候都是没有错的 但是当我要仿真的时候点LOAD PROGRAM时就是没有办法登陆。OUT文件 总是提示说是请检查BUILD OPTION 和or use the setuo program 但是我不觉得里面也没有什么可以设置的 请问是怎么回事了?…

查看全部问答>

关于msp430f169和PTR相连

请问师兄师姐们谁有关于msp430f169和PTR8000(nrf905)相连的电路图和c代码啊 小弟急需啊 谢谢啦 [ 本帖最后由 li84006800 于 2011-7-13 23:45 编辑 ]…

查看全部问答>