历史上的今天
返回首页

历史上的今天

今天是:2025年06月15日(星期日)

2021年06月15日 | STM32F4之USART串口通信

2021-06-15 来源:eefocus

资源:STM32F407有2个UART(通用异步收发器),4个USART(通用异步/同步收发器)


在STM32F407ZET6的手册上有描述,

这些接口所对应的引脚如下:

在这里我们选用串口1进行简单编程:


实现功能吐下:


1.每秒发送一个数字


2.进行数据回传


其所要配置的内容如下:


1.GPIO的时钟使能


2.声明一个GPIO结构体变量,进行定义并进行初始化,主要是开启复用功能


3.将GPIO复用为何,将IO口功能配置为USART功能


4.USART1的时钟进行使能


5.声明一个USART结构体变量,进行定义并进行初始化,设置其波特率,停止位,字长,是否硬件流控制,收发模式,


6.设置中断优先组


7.声明一个中断优先组变量,进行定义并进行初始化,设置什么为中断源,其抢占优先组,响应优先组的值


8.配置串口中断源为哪个:是接收中断还是发送中断


9.使能USART1


int main(void)

{

 

    //配置systick时钟的时钟源

SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);

if(SysTick_Config(SystemCoreClock/1000)!=0)

{

}

 

//配置中断优先分组

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

//声明一个GPIO结构体变量

GPIO_InitTypeDef GPIO_InitStructure;

//声明一个USART结构体变量

USART_InitTypeDef USART_InitStructure;

//使能USART1外设时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);

//使能GPIO外设时钟

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);

//定义GPIO结构体变量,复用该IO口作为串口

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9 |GPIO_Pin_10;//两个IO口

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);

//定义USART结构体变量

USART_InitStructure.USART_BaudRate=115200;

USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//硬件流控制   

USART_InitStructure.USART_Mode=USART_Mode_Tx|USART_Mode_Rx; //收发模式

USART_InitStructure.USART_Parity=USART_Parity_No;    //无校准

USART_InitStructure.USART_StopBits=USART_StopBits_1; //1位停止位

USART_InitStructure.USART_WordLength=USART_WordLength_8b;  //字长为8

//明确IO为何功能进行配置

GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1); //

GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);

//串口进行初始化

USART_Init(USART1,&USART_InitStructure);

    //串口中断优先组结构体变量声明

NVIC_InitTypeDef NVIC_InitStructure_usart;

//定义该串口中断优先组分组

NVIC_InitStructure_usart.NVIC_IRQChannel=USART1_IRQn;

NVIC_InitStructure_usart.NVIC_IRQChannelCmd=ENABLE;

NVIC_InitStructure_usart.NVIC_IRQChannelPreemptionPriority=0x01; //抢占优先级设置

NVIC_InitStructure_usart.NVIC_IRQChannelSubPriority=0x02; //响应优先级设置

//初始化该优先级分组

NVIC_Init(&NVIC_InitStructure_usart);

//配置串口接收中断

USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);

//使能串口1

USART_Cmd(USART1,ENABLE);

     

while(1)

{

    //定时发送数据的功能

USART_SendData(USART1,9);

delay_sys(1000);

}

 

}

 


//进行数据的回传

void USART1_IRQHandler(void)

{

u8 res;

if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)//判断是否有接收中断

{

res=USART_ReceiveData(USART1);

USART_SendData(USART1,res);

}

 

}

//延时功能

int delaytime;

void delay_sys(unsigned int time)

{

delaytime=time;

while(delaytime!=0);//延时

}

 


//systick中的中断函数,对其进行编写

/**

  * @brief  This function handles SysTick Handler.

  * @param  None

  * @retval None

  */

void SysTick_Handler(void)

{

 

if(delaytime!=0)

{

delaytime--;

}

}


最后可以实现所要求的功能。

推荐阅读

史海拾趣

常州星海电子(Starsea)公司的发展小趣事

在拓展国内市场的同时,常州星海电子也积极开拓国际市场。公司的产品主要销往欧洲地区、美国和亚洲各国,是MOTOROLA、YAMAHA、Samsung、VTECH、LG、NOKIA等跨国公司的二极管供应厂家。国外销售量占公司总销售量的60%以上,这一成绩不仅体现了公司在国际市场上的竞争力,也为公司未来的发展奠定了坚实的基础。

Denyo Europa Gmbh公司的发展小趣事

Denyo Europa Gmbh公司在电子行业中崭露头角,始于一次技术创新的突破。公司研发团队经过数年的努力,成功开发出一种新型高效能电池技术,这种电池不仅容量大,而且充电速度快,安全性能高。这一技术的推出,迅速赢得了市场的认可,也为公司带来了可观的收益。公司因此逐渐在电子行业中建立了自己的技术领先地位。

EF Johnson Technologies Inc公司的发展小趣事

在产品质量方面,EF Johnson公司始终坚持高标准、严要求。公司建立了完善的质量管理体系,从原材料采购到生产制造再到售后服务,每一个环节都严格把关。这种对品质的执着追求让EF Johnson的产品在市场上赢得了良好的口碑和用户的信赖。随着品牌知名度的提升,EF Johnson的市场份额也稳步增长。

方舟(ARKLED)公司的发展小趣事

方舟公司自成立以来,始终致力于LED光电技术的研发与创新。公司拥有一支由行业专家和技术骨干组成的研发团队,不断推出具有自主知识产权的新产品。其中,方舟公司独创的某款LED显示屏,以其高清晰度、低功耗和长寿命等特性,在市场上获得了广泛认可。这款产品不仅提升了方舟公司的品牌影响力,还为公司带来了丰厚的经济回报。

Dearborn Electronics Inc公司的发展小趣事

随着电子行业的快速发展和市场竞争的加剧,Dearborn Electronics Inc.面临着诸多挑战。为了保持竞争优势,公司不断进行转型升级,推出了一系列具有更高性能、更小尺寸、更低成本的新产品。同时,公司也积极拓展新的应用领域和市场,寻找新的增长点。

Crystal Semiconductor Corp公司的发展小趣事

在快速发展的同时,Crystal Semiconductor Corp也注重可持续发展。公司积极推行环保理念,采用环保材料和工艺生产产品。同时,公司还加大了对教育和公益事业的投入,培养了一批批优秀的半导体人才。展望未来,Crystal Semiconductor Corp将继续秉承创新、务实、高效的理念,不断推动半导体行业的发展。

请注意,这些故事是虚构的,旨在展示一个半导体公司可能经历的发展阶段和挑战。如果您需要关于Crystal Semiconductor Corp的真实故事,建议您查阅相关公司资料或新闻报道。

问答坊 | AI 解惑

美国国家半导体为高压功率转换系统提供电源管理解决方案

美国国家半导体为高压功率转换系统提供电源管理解决方案 由于新一代的产品不断推陈出新,对功率转换的要求也越来越严格,美国国家半导体于是推出这系列全新的高压电源管理产品,以满足各大厂商客户这方面的要求。LM5000 系列芯片是一个功能齐备的电 ...…

查看全部问答>

我看FPGA现在难以取代FPGA+DSP的架构,这段时间的思索总结

FPGA现在越做越大了,有些公司如Xilinx推出的FPGA都内嵌了DSP核,很多人都在讨论说FPGA会取代现在主流的复杂数字信号处理系统的架构:FPGA+DSP了,SOC片上系统的时代真的要来了,我也对这个概念很憧憬,但经过一段时间的调研后,觉得现在还不成熟, ...…

查看全部问答>

角度传感器应用2

角度传感器应用2 [ 本帖最后由 小虾米gg 于 2009-9-2 15:27 编辑 ]…

查看全部问答>

多学习,多下载!谢谢!

多学习,多下载!谢谢!…

查看全部问答>

发个洞洞板布线的小工具

个人觉得还不错,与大家分享下,呵呵 …

查看全部问答>

汽车变速器的基本知识

图为变速器操纵装置及动力传动图解。   汽车变速器具有这样几个功用:   ①改变传动比,扩大驱动轮转矩和转速的变化范围,以适应经常变化的行驶条件,同时使发动机在有利(功率较高而油耗较低)的工况下工作; ②在发动机旋转方向不变情况下 ...…

查看全部问答>

[求助]有没有关于特权APIs的例子?

要能在SP就是smartphone上运行的。不要只能在ppc上运行的。最好有详细的说明,还要有运行步骤说明。…

查看全部问答>

中小单位IT升级的绝好机遇

毕业以后,在一家小企业上班,日子过的平平淡淡,开始把真实的自己藏在一张带着虚伪笑容的面具下面,谈不上厌倦,就是麻木了,早已经没有了当年的热血,我相信不只是我,从这个城市的灯红酒绿间穿过的每个人,都是这样的一具行尸走肉……日子已经开 ...…

查看全部问答>