stm32之USART串口配置

发布者:温暖微风最新更新时间:2017-09-17 来源: eefocus关键字:stm32  USART  串口配置 手机看文章 扫描二维码
随时随地手机看文章

概念 
在STM32的参考手册中,串口被描述成通用同步异步收发器(USART),它提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。(好吧我也不是很懂,暂且贴上官方定义,各位看官自己悟吧) 
配置步骤

  1. 打开时钟(RCC配置) 
    由于UART的TX和RX和AFIO都挂在APB2桥上,因此采用固件库函数RCC_APB2PeriphClockCmd()进行初始化。UARTx需要分情况讨论,如果是UART1,则挂在APB2桥上,因此采用RCC_APB2PeriphClockCmd()进行初始化,其余的UART2~5均挂在APB1上。

  2. GPIO配置 
    GPIO的属性包含在结构体GPIO_InitTypeDef,其中对于TX引脚,GPIO_Mode字段设置为GPIO_Mode_AF_PP(复用推挽输出),GPIO_Speed切换速率设置为GPIO_Speed_50MHz;对于RX引脚,GPIO_Mode字段设置为GPIO_Mode_IN_FLOATING(浮空输入),不需要设置切换速率。最后通过GPIO_Init()使能IO口。

  3. NVIC配置 
    STM32在只有一个中断的情况下,仍然需要配置优先级,其作用是使能某条中断的触发通道。STM32的中断有至多两个层次,分别是抢占优先级(主优先级)和子优先级(从优先级),而整个优先级设置参数的长度为4位,因此需要首先划分抢占优先级位数和子优先级位数,通过NVIC_PriorityGroupConfig()实现;

    特定设备的中断优先级NVIC的属性包含在结构体NVIC_InitTypeDef中,其中字段NVIC_IRQChannel包含了设备的中断向量,保存在启动代码中;字段NVIC_IRQChannelPreemptionPriority为主优先级NVIC_IRQChannelSubPriority为从优先级,取值的范围应根据位数划分的情况而定;最后NVIC_IRQChannelCmd字段是是否使能,一般置为ENABLE。最后通过NVIC_Init()来使能这一中断向量。

  4. USART配置 
    通过结构体USART_InitTypeDef来确定。UART模式下的字段如下:

    USART_BaudRate:波特率(每秒能传输的数据位),缺省值为9600。

    USART_WordLength:字长

    USART_StopBits:停止位

    USART_Parity:校验方式(奇偶校验)

    USART_HardwareFlowControl:硬件流控制

    USART_Mode:单/双工,即收发状态。

    最后通过USART_Init()来设置。

  5. 代码汇总

void uart_init(u32 bound){

    GPIO_InitTypeDef GPIO_InitStructure;
    USART_InitTypeDef USART_InitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //使能USART1和GPIOA时钟
    USART_DeInit(USART1);  //复位串口1(各参数置为缺省值)

    //USART1_TX(发送数据)   PA.9引脚
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; 
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
    GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA.9

    //USART1_RX(接收数据)     PA.10引脚
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
    GPIO_Init(GPIOA, &GPIO_InitStructure);  //初始化PA.10

   //NVIC中断向量配置 
    NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级置为3
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;      //子优先级置为3,优先级依据不同的中断重要性不同来确定。
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;         //IRQ通道使能
    NVIC_Init(&NVIC_InitStructure); //根据上面设置的参数初始化NVIC寄存器

   //USART初始化设置
    USART_InitStructure.USART_BaudRate = bound;//波特率为9600;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据
    USART_InitStructure.USART_StopBits = USART_StopBits_1;//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);             //串口使能}123456789101112131415161718192021222324252627282930313233343536373839


关键字:stm32  USART  串口配置 引用地址:stm32之USART串口配置

上一篇:STM32的GPIO的寄存器介绍和设置
下一篇:stm32之RCC学习笔记

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

STM32安全技术导论之二】加解密技术
无论通讯安全还是设备安全都离不开加解密技术。我们经常需要需要各种各样的密码,那么背后一定是加解密技术。 加解密技术说白了就是变换,加密变换和它的反变换---解密变换。加解密技术也有三个属性,也叫 CIA,保密性,完整性以及可认证性。注意,最后的这个A与信息安全三要素CIA中的可用性 A 不一样,一个是 Authentication, 一个是 Availability。能够提供保密服务的有对称密钥和非对称密钥。 能够提供狭义完整性服务的有单向散列函数。能够提供认证鉴别类服务有基于非对称密钥技术的数字签名技术, 以及基于对称密钥的技术的消息验证码 MAC。 1、 加解密技术史 谈到加解密发展史,不得不提 香农 。克劳德
[单片机]
STM32 休眠模式下,难道 看门狗和低功耗模式没法同时使用
在STM32开发中经常会用到独立看门狗(IWDG)和低功耗模式,看门狗是为了检测和解决由软件错误引起的故障,低功耗模式是为了在CPU不需要继续运行时进入到休眠模式用以节省电能。其中独立看门狗的时钟由独立的RC振荡器(STM32F10x一般为40kHz)提供,即使在主时钟出现故障时,也仍然有效,因此可以在停止和待机模式下工作。而且独立看门狗一旦启动,除了系统复位,它不能再被停止。但这样引发的一个问题是当MCU进入到低功耗模式后由于CPU停止运行无法喂狗,会导致系统频繁复位。那如何解决这个问题呢,难道独立看门狗和低功耗模式没法同时使用? 一个很好的方式是在休眠模式下通过RTC定时唤醒来喂狗,喂完够在进入继续进入到休眠模式。比如看门
[单片机]
STM32学习笔记(3):系统时钟和SysTick定时器
1. STM32的时钟系统 在STM32中,一共有5个时钟源,分别是HSI、HSE、LSI、LSE、PLL (1) HSI是高速内部时钟,RC振荡器,频率为8MHz; (2) HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围是4MHz 16MHz; (3) LSI是低速内部时钟,RC振荡器,频率为40KHz; (4) LSE是低速外部时钟,接频率为32.768KHz的石英晶体; (5) PLL为锁相环倍频输出,严格的来说并不算一个独立的时钟源,PLL的输入可以接HSI/2、HSE或者HSE/2。倍频可选择为2 16倍,但是其输出频率最大不得超过72MHz。 其中
[单片机]
基于STM32的触摸屏学习笔记
本文共有三个内容:一、电阻触摸屏的原理;二、XPT2046的控制字与数字接口;三、程序源码讲解(参考正点原子的代码) 一、电阻触摸屏的原理,上图: 图上的文字介绍了触摸的原理,下面总结一下触摸的原理: 触摸屏工作主要是两个电阻屏(上下两层)在工作,如上图,当某一层电级加上电压时,会在该网络上形成电压梯度。如果有外力使得上下两层在某一点接触,则在未加电压的那一层可以测得接触点的电压,从而得出接触点的坐标(X或Y)。举个例子:当我们在上层的电极间(Y+和Y-)加上电压,则会在上层形成电压梯度(这里读者可以想想AD转换的原理),当有外力使得上下两层在某一点接触时,在底层X层就可以测得接触点处的电压(每个点电压都不同),再根据测得电
[单片机]
基于<font color='red'>STM32</font>的触摸屏学习笔记
STM32的PWM极性和模式
初学STM32 本人还是菜鸟级选手,学习PWM这节一直困惑不解,对PWM的模式和极性搞不清楚。不久前,突然恍然大悟。众里寻他千百度,蓦然回首那人却在灯火阑珊处。 其实,想通了也很简单。再说PWM模式之前,我们要知道计数器CNT。比如在向上计数模式时CNT从0计数到设定的周期值。还有一个用来确定高低电平分割线的CCRx的寄存器。这样一来就可以知道PWM的周期有定时的周期值确定,高低占空比有CRRx值来确定。 PWM一共有两种模式,PWM1模式:CNT CRRx为有效电平。CNT CRRx为无效电平。PWM2模式相反。那么问题来了什么为有效电平?他又怎么确定 它是由TIM_OCInitStructure.TIM_OCPolarity
[单片机]
STM32 FSMC操作SRAM的步骤简析
本次操作的SRAM的型号是IS62WV51216,是高速,8M位静态SRAM。它采用ISSI(Intergrated Silicon Solution, Inc)公司的高性能CMOS技术,按照512K个字(16)位进行组织存储单元。其具有高性能、低功耗特点。为方便用户扩展SRAM的存储空间,为用户有提供了两个片选引脚;此外,含有两个字节控制信号UB和LB,可方便用户按字节访问SRAM或按字访问SRAM。IS62WV51216具有45ns/55ns访问速度,因为是全静态操作,因此无需外部时钟和刷新要求。 IS62WV51216功能框图 IS62WV51216有地址译码器、数据IO、控制逻辑和存储阵列四部分构成。地址译码器将1
[单片机]
<font color='red'>STM32</font> FSMC操作SRAM的步骤简析
STM32如何配置ADC?
1、 系统时钟定义: RCC_Configuration(); 包涵: RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMAx, ENABLE); // Enable DMA clock RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADCx , ENABLE); // Enable ADC1 and GPIOC clock 2、 中断源配置: NVIC_Configuration(); 举例: { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); NV
[单片机]
stm32快速学习3——简单按键中断
2个按键中断,控制2个LED Main文件 #include stm32f10x.h void RCC_Configuration(void); void GPIO_Configuration(void); void EXTI_Configuration(void);//外部中断设置 void NVIC_Configuration(void);//中断优先级别设置 unsigned char led_bit1=0; unsigned char led_bit2=0; int main(void) { RCC_Configuration(); GPIO_Configuration(); EXTI_
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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