历史上的今天
返回首页

历史上的今天

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

正在发生

2018年09月29日 | STM32f4---串口通信实验代码(01)

2018-09-29 来源:eefocus

打开串口实验工程,然后在SYSTEM组下双击usart.c,我们就可以看到该文件里面的代码,先介绍 uart_init函数,该函数代码如下:

void uart_init(u32 bound)

{

      GPIO_InitTypeDef GPIO_InitStructure;

USART_InitTypeDef USART_InitStructure;

NVIC_InitTypeDef NVIC_InitStructure;

 

//GPIOA和USART1时钟使能

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

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

  

//USART_DeInit(USART1);  //复位串口 1

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

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

  

//USART1_TX   PA.9 PA.10 

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

 

//USART 初始化设置

USART_InitStructure.USART_BaudRate = bound;//一般设置为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); //初始化串口

 

#if EN_USART1_RX  //NVIC 设置,使能中断

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

//Usart1 NVIC 配置

  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;

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

NVIC_InitStructure.NVIC_IRQChannelSubPriority =2;    //响应优先级 2

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

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

#endif

}

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

从该代码可以看出,其初始化串口的过程,和我们前面介绍的一致。我们用标号~标示了顺序:

  串口时钟使能,GPIO时钟使能

  设置引脚复用器映射

  GPIO 端口初始化设置

  串口参数初始化

  初始化 NVIC 并且开启中断

  使能串口

这里需要注意一点,因为我们使用到了串口的中断接收,必须在 usart.h 里面设置 EN_USART1_RX为1 (默认设置就是1的) 。该函数才会配置中断使能,以及开启串口1的NVIC中断。这里我们把串口 1中断放在组2,优先级设置为组2 里面的最低。

串口 1 的中断服务函数 USART1_IRQHandler,在 5.3.3 已经有详细介绍了,这里我们就不再介绍了。


推荐阅读

史海拾趣

永丰盈(CST)公司的发展小趣事

品质是CST的生命线。为了确保产品质量的稳定性和可靠性,公司建立了完善的质量管理体系,严格执行ISO9001质量体系及ISO14001环境体系。同时,公司还注重员工的培训和教育,提高员工的质量意识和操作技能。这些措施使得CST的产品质量得到了客户的广泛认可。

Defense Logistics Agency公司的发展小趣事

随着军事现代化的推进,DLA意识到整合与优化供应链的重要性。于是,DLA开始着手整合各个军事部门的后勤系统,实现资源的集中管理和统一调配。通过引入先进的供应链管理技术,DLA大幅提高了物资采购、存储、运输和分发的效率,确保了美军在全球范围内的作战需求得到及时、准确的满足。

Hifn Inc公司的发展小趣事

随着军事现代化的推进,DLA意识到整合与优化供应链的重要性。于是,DLA开始着手整合各个军事部门的后勤系统,实现资源的集中管理和统一调配。通过引入先进的供应链管理技术,DLA大幅提高了物资采购、存储、运输和分发的效率,确保了美军在全球范围内的作战需求得到及时、准确的满足。

千志电子(CCO)公司的发展小趣事

千志电子于1986年由董事长陈初志先生在台湾创立,起初专注于生产各类型插件式电阻。随着业务的不断发展,公司意识到拓展更广阔市场的重要性。1996年,千志电子进军中国市场,在深圳设立了千志电子(深圳)有限公司,这一举措标志着公司开始走向国际化。深圳作为中国改革开放的前沿阵地,为千志电子提供了丰富的资源和广阔的市场空间,为其后续的发展奠定了坚实基础。

Deltrol Controls公司的发展小趣事

在电子设备的制造过程中,螺线管是不可或缺的元件之一。然而,传统的螺线管生产方式存在效率低下、质量不稳定等问题。Deltrol Controls通过引进先进的生产设备和技术,实现了螺线管的精细化生产。这一举措不仅提高了生产效率,而且保证了螺线管的质量稳定性。凭借这一优势,Deltrol Controls在电子行业中的竞争力得到了显著提升。

Gigarams Semiconductor Device Corp公司的发展小趣事
这可能是由于控制算法复杂或系统响应速度不足导致的。解决方案包括简化控制算法、提高系统响应速度或采用更高效的控制策略。

问答坊 | AI 解惑

WiMAX技术综述

人类的科学总是不断进步的,技术总是为应运而生的。WiMAX 作为一项新兴技术,能够在比Wi-Fi更广阔的地域范围内提供“最后一公里”宽带连接性,由此支持企业客户享受T1 类服务以及居民用户拥有相当于线缆/DSL 的访问能力。凭借其在任意地点的1~6 英 ...…

查看全部问答>

wince eboot之flash管理问题

我使用S3C2410芯片和K9F1208的FLASH。现在我的EBOOT可以实现直接下载NK.BIN并在RAM中启动,但是无法在FLASH中启动。 超级终端显示如下: TFTP: Desktop losing ACK, block number = 18570, Ack again TFTP: Desktop losing ACK, block number = ...…

查看全部问答>

请教高手:单片机中断处理的问题

我在单片机中编程如下,SendKey_Protocl();是一个费时的操作,超过30ms,小于600ms,我得不到想要的结果,请问:--在中断处理服务程序中,如果费时的函数调用没有处理完是否在后台处理?还是被舍弃?。。。请问高手应该怎么处理? //TIMER0 ini ...…

查看全部问答>

关于eboot下flash的问题

最近在修改eboot,(ep9315的cpu)现在发现有个擦flash的问题,运行到 Continue to Erase the rest of Flash. *pFlash        = EA0003FF . ERROR: Error while erasing flash 就发生错误 不是硬件的问题,因为用自 ...…

查看全部问答>

请教个问题

请问哪里可以找到wind river的snmp v2或者v3的代码包 如果全的话 包里一共是多少个文件 谢谢大家了 …

查看全部问答>

MTK中如何调整HIGHTLIGHT的高度啊

MTK中如何调整HIGHTLIGHT的高度啊…

查看全部问答>

如何给430增加usb功能?

不是五系列的,想给1611做的一个系统增加usb功能,不知道应该选用什么样的usb控制芯片,做怎样的工作,需要增加多少代码,不知道1611的flash是不是够?希望高手指教…

查看全部问答>

宝工的东西好用吗?

本帖最后由 minjiang 于 2014-7-22 20:08 编辑 现在喜欢耍嘴皮子的人越来越多了,干活的人到少了。最近教育部好像在提 以后很多学校要改成技术类的学校,包括985类的高校。不过现在高校又有 多少老师能真正干活呢?在这里大家来讨论从事电子行 ...…

查看全部问答>

【瑞萨R7F0C80212】当年的入门

仿真器坏了,这是当时做的一个入门的小程序,可能不能入门各位法眼了。 小观一下吧。 安装方法的。。。。 点击安装,一般在win7上好用,在xp没有安装成功,可能更新的太少了。。。。。。。。 一下的步骤就不用再说了。。。。 ...…

查看全部问答>

求助,24V 5A的电源设计方案

  各位大神,求输出24V 5A的恒压电源,电压精度±5%,需要过流、过压、短路保护、保护功能需要MCU来实现。有没有大神提供下方案,不胜感激! …

查看全部问答>