STM32F4之USART【库函数操作】

发布者:Meshulun最新更新时间:2018-08-13 来源: eefocus关键字:STM32F4  USART  库函数操作 手机看文章 扫描二维码
随时随地手机看文章

STM32F407xx内嵌四个通用同步/异步接收器(USART1,USART2,USART3 和USART6)和两个通用异步收发器(UART4和UART5)。这6个接口提供异步通信的IrDASIR ENDEC支持,多机通信模式,单线半双工通信模式LIN主/从功能。 USART1和USART6接口能够速度高达10.5 Mbit / s的通信其他可用的接口通信高达5.25bit/s。USART1,USART2,USART3和USART6还提供硬件管理的CTS,RTS信号,智能卡的模式(ISO7816兼容)和类似的SPI通信能力。所有接口都可以通过DMA控制器。
         这里只使用了两根线的最简单串口设置。
         硬件环境:STM32F4-Discovery
         软件环境:MDK4.7a
         实现的功能:1、串口初始化,
                              2、通过串口发送数据
                              3、中断方式接收数据,并将接收到的数据回送。
        使用库函数操作
        首先,配置NVIC使用NVIC_PriorityGroupConfig()设置优先级分组,使用NVIC_Init()对NVIC进行初始化
void NVIC_Config()
{
    NVIC_InitTypeDef NVIC_InitStructure;
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x03;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;
    NVIC_InitStructure.NVIC_IRQChannel  = USART1_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        
    NVIC_Init(&NVIC_InitStructure);
}
第二步:配置引脚功能,因为我的板子上PA9被用来驱动LED了,http://tiyubisai.com/video_news/news_135582.html 所以只能将将串口映射到PB6,PB7。这个设置跟F1系列的有点差别。首先初始化端口时钟,第二配置端口引脚功能,第三不设置功能映射将串口连接到引脚。
void USART_Gpio_Config(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    
    RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOB  , ENABLE);
    
    //PB6->TX  PB7->Rx
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
    
    GPIO_PinAFConfig(GPIOB,GPIO_PinSource6,GPIO_AF_USART1);
    GPIO_PinAFConfig(GPIOB,GPIO_PinSource7,GPIO_AF_USART1);
}
第三步:配置串口工作方式。步骤也差不多:打开时钟,用Init函数初始化串口,设置串口的接收中断,最后别忘了使能串口。
void USART_Config(void)
{
        USART_Gpio_Config();
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
    
    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_ITConfig(USART1,USART_IT_RXNE,ENABLE);
    
    USART_Cmd(USART1,ENABLE);
    
}
第四步:添加串口中断函数,函数名是固定的:void USART1_IRQHandler(void)。中断进入时候,先判断接收寄存器是否有数据,有数据时候就接收,然后使用USART_SendData()将数据发回
void USART1_IRQHandler(void)
{
    char c;
    if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==SET)
    {
        c = USART_ReceiveData(USART1);
        USART_SendData(USART1,c);
    }
        //while(1);
}
最后就是main了,没啥可说的
int main(void)
{
    NVIC_Config();
    USART_Config();
    while(1)
    {
        while(RESET == USART_GetFlagStatus(USART1,USART_FLAG_TXE));
        USART_SendData(USART1,'b');
        while(RESET == USART_GetFlagStatus(USART1,USART_FLAG_TXE));
        USART_SendData(USART1,'a');
        delay_ms(1000);
    }


关键字:STM32F4  USART  库函数操作 引用地址:STM32F4之USART【库函数操作】

上一篇:STM32F103 5个串口同时使用
下一篇:STM32F407用USART2与HC06蓝牙模块通信

推荐阅读最新更新时间:2024-03-16 16:10

STM32F4 C++ 封装库 之 GPIO
一直有一个想法就是用 C++ 去做 STM32 的开发,但是很少有这方面的资料。经过一段时间的思考,决定在官方的 ll 库的基础上做一层 C++ 的简单封装。因为官方的库基本实现了全系列的 MCU 都是相同的 API 接口,所以 C++ 封装后的库也有很好的移植性。原理性的东西就不讲理了,直接上代码。 stm32f4xx_xgpio.h 文件 /** ****************************************************************************** * \file stm32f4xx_xgpio.h * \author XinLi * \version v
[单片机]
MSP430系列通用串行通信模块的异步模式(USART
1、MSP430串行通信概述 串口是系统与外界联系的重要手段,在嵌入式系统开发和应用中,经常需要使用上位机实现系统调试及现场数据的采集和控制。一般是通过上位机本身配置的串行口,通过串行通信技术,和嵌入式系统进行连接通信。 MSP430系列的每一种型号都可以实现串行通信功能:USART硬件直接实现。 片内具有硬件USART模块的MSP430系列单片机,由于系列不同片内可以包含一个USART模块(USART0),还可以包含多个USART模块(USART0、USART1、USART2)。USART模块可以自动从任何一种低功耗模式LPMx开始自动工作。所有USART0和USART1都可以实现两种通信方式:UART异步通信和SPI同步通信。
[单片机]
MSP430系列通用串行通信模块的异步模式(<font color='red'>USART</font>)
stm32f407】I2C实验
一.I2C介绍 IIC(Inter-IntegratedCircuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。它是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,高速IIC总线一般可达400kbps以上。如图: I2C协议一共有6种协议信号 ① 空闲状态 ② 开始信号 ③ 停止信号 ④ 应答信号 ⑤ 数据的有效性 ⑥ 数据传输 1) 空闲信号 I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场
[单片机]
【<font color='red'>stm32f4</font>07】I2C实验
第7章 STM32F429下载和调试方法(IAR8)
7.1 初学者重要提示 如果使用JLINK调试下载STM32F429,可以使用JLINK V8,V9和V10。 如果使用STLINK调试下载STM32F429,推荐使用最新的电脑端驱动和对应的固件,详情见第2章的2.6小节。 JLINK无法下载解决思路以及常见问题整理,适用于其它LINK:http://www.armbbs.cn/forum.php?mod=viewthread&tid=21708 。 7.2 使用IAR调试和下载程序设置(JLINK) 调试下载STM32F429,可以使用JLINK V8,V9和V10,JLINK的驱动安装等相关文件已经在本教程第2章的2.5章节有说明 在上个章节里面,我们已经
[单片机]
第7章 <font color='red'>STM32F4</font>29下载和调试方法(IAR8)
STM32F407】第2章 ThreadX USBX协议栈介绍
2.1 初学者重要提示 1、 ThreadX是小型RTOS的巅峰之作,通过了各行各业的安全认证,并且大部分都是最高安全标准。作为 中间件 的USBX文件系统也通过了各种安全认证。 2.2 Express Logic公司介绍 ThreadX的作者是William lamie(同样是Nucleus RTOS的原始作者,于1990年发布)。1996的时候成立了Express Logic,并于1997发布首版ThreadX RTOS。 ThreadX4发布于2001年,ThreadX5发布于2005年,ThreadX6发布于2020年。 FileX – ThreadX的嵌入式文件系统于1999年发布首版。 NetX – Thr
[单片机]
【<font color='red'>STM32F4</font>07】第2章 ThreadX USBX协议栈介绍
LPC824-串口USART(续二)
通过前面的分析知道,在LPC824中,USART所拥有的配置寄存器有很多,但在一般情况下,如果只是简单地使用收发功能,则只需要使用到配置寄存器CFG、波特率发生器寄存器BRG、中断使能读取和置位寄存器INTENSET、中断状态寄存器INTSTAT、接收器数据寄存器RXDAT、发送器数据寄存器TXDAT等6个主要寄存器,其余的寄存器取默认值即可。下面就来看一个实例。 例子:要求LPC824把USART接收到的数据原样发送回去,波特率115200,8位数据位,1位停止位。 完整代码如下。 #include LPC82x.h //************************串口初始化*********************
[单片机]
LPC824-串口<font color='red'>USART</font>(续二)
LPC824-串口USART
串行口是单片机的标准配置,通过它可以与计算机进行通信,也可以用它来下载程序,下面就来讨论一下LPC824的串口应用。LPC824具备有3个串口,称为通用异/同步收发器(USART),下图给出了它们的内部结构。 从上图中可以看到,UART位于APB设备区,它不仅仅具有TXD和RXD功能,还拥有完整9针串口的所有引脚,因此直接用LPC824来开发Modem控制器是很方便的。当然,一般情况下若只与PC机通信或多机通信,只需要用TXD和RXD两个引脚就可以了。 下表给出了USART接口用到的全部寄存器描述,3个USART的寄存器全部一样,其基址分别为0x40064000(USART0)、0x40068000(USART1)、0x
[单片机]
LPC824-串口<font color='red'>USART</font>
STM32串口通讯USART
三种方式:查询,中断,DMA 通用同步异步收发器(USART)提供了一种灵活的方法来与使用工业标准NR 异步串行数据格式的外部设备之间进行全双工数据交换。 USART利用分数波特率发生器提供宽范围的波特率选择。 它支持同步单向通信和半双工单线通信。它也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。用于多缓冲器配置的DMA方式,可以实现高速数据通信。 主要特性: 全双工的,异步通信 NR 标准格式 分数波特率发生器系统 -发送和接收共用的可编程波特率,最高到4.5Mbits/s 可编程数据字长度(8位或9位) 可配置的停
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved