STM32--UART异步通信学习

发布者:渤海湾最新更新时间:2017-11-01 来源: eefocus关键字:STM32  UART  异步通信 手机看文章 扫描二维码
随时随地手机看文章

字符发送的过程描述:在UART的发送过程中先将数据输入到发送数据寄存器中(TDR)此时(TXE)被硬件置1,之后TDR寄存器将数据串行移入到发送移位寄存器中,将数据在TX端口发送,此时(TC)被硬件置1。 发送与接收是逆过程。

UART发送配置步骤:

    1.通过USART_CR1寄存器上置位UE来激活USART。

     2.编程USART_CR1的M位来定义字长。

     3.在USART_CR2中编程停止位的位数。

     4.如果采用多缓冲器通信,配置USART_CR3中的DMA使能位(DMAT)。按多缓冲器通信中的描述配置DMA寄存器。

     5.利用USART_BRR寄存器选择要求的波特率。

     6. 设置USART_CR1中的TE位,发送一个空闲帧作为第一次数据发送。

     7. 把要发送的数据写进USART_DR寄存器(此动作清除TXE位)。在只有一个缓冲器的情况下,对每个待发送的数据重复步骤7。

     8. 在USART_DR寄存器中写入最后一个数据字后,要等待TC=1,它表示最后一个数据帧的传输结束。当需要关闭USART或需要进入停机模式之前,需要确认传输结束,避免破坏最后一次传输。

 

在配置USART的接收时,除上面的步骤外,还要使能接收中断并且配置中断向量控制器NVIC。

    波特率的计算方法:

STM32--UART异步通信学习

      

USART的编程:

   1.定义USART_InitTypeDef类型的结构体 UART_init

   2.使能GPIO的时钟和USART的时钟。(UART1 PA9为TX,PA9为RX)

   3.配置UART_init结构体的各参数。 配置波特率、数据位、停止位、奇偶效验位、硬件流、收发模式

   4.初始化UART_init结构体的各参数使用函数。

   5.使能USART

   6.定义GPIO_InitTypeDef类型的结构体  GPIO_UART

   7.讲相应GPIO引脚(PA10 RX PA9 TX)。

   8.初始化GPIO引脚。

   在配置接收模式时,还要使能接收中断,并且配置中断向量控制器NVIC。

   在发送完数据时,要判断标志TC是否置位,在接收数据时,要判断是否有接收中断请求。


关键字:STM32  UART  异步通信 引用地址:STM32--UART异步通信学习

上一篇:STM32使用Flash存储器当作EEPROM来保持数据
下一篇:STM32单片机----外部中断EXTI学习

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

STM32 USB 之从0开始移植笔记
-----------------------------------动机----------------------------------- 写在前面的话:最近逛淘宝无意间发现RC522居然只要10元左右就可以包邮买到,真是太便宜了,就忍不住买了个回来玩玩。到货移植到我的板子上OK 后突然发现我的USB口紧张了,一个用来给板子供电一个插jlink 一个插入usb转串口给RC522下命令。就想着将板子供电和RC522传输用一个USB接口来实现。这就是这次折腾USB的来由~-~ ----------------------------------开始折腾USB----------------------------
[单片机]
STM32初学笔记4之USART
=========================== 文件分割线 =============================== /** ** 文件名称:BSP_ALIENTEK.H ** 功能描述:ALIENTEK开发板板级支持包声明 ** 硬件平台:STM32F103RBT6 Development Board ** 编译环境:Keil uversion4 IDE ** 版本信息:v0.2 ** 编写作者:唐华明 ** 编写时间:2011.11.26 ** 附加说明:无 ** 修改记录:2011-11-26 将DS0Off() GPIO_SetBits(GPIOD, GPIO_Pin_8)修改为 **
[单片机]
CAN总线学习笔记|CAN盒测试STM32的CAN中断接收
CAN基础知识介绍文中介绍了CAN协议相关的基础知识,以及STM32F4芯片的CAN控制器相关知识,下面将通过实例,利用STM32CubeMX图形化配置工具,并配合CAN盒,来实现CAN通讯的中断收发测试 1. STM32CubeMX配置 CAN是挂载在APB1总线上,设置PCLK1时钟频率到最大45MHz 激活CAN1,配置位时序参数,其他基本参数以及工作模式(此处设置为Normal普通模式) CAN波特率的计算公式:只需要知道BS1和BS2的设置,以及APB1的时钟频率,就可以方便的计算出波特率。比如设置TS1=8、TS2=6和BRP=6,在APB1频率为45Mhz的条件下,即可得到CAN通信的波特率=45000/6
[单片机]
CAN总线学习笔记|CAN盒测试<font color='red'>STM32</font>的CAN中断接收
STM32开发笔记43: 使用CMSIS-RTOS建立任务
单片机型号:STM32F070F6P6 昨天,将FreeRTOS移植到STM32现有的工程后,今天希望使用RTOS进行工程设计,遇到的第1个问题,就是工程中的函数在FreeRTOS的帮助文档中全部都检索不到。在网上仔细学习后,才发现,ST公司给的FreeRTOS例程,又进行了一层封装,这层就是CMSIS-RTOS。CMSIS-RTOS是keil公司对不同RTOS的一种封装结构,可以使不同的RTOS具有相同的调用接口,以方便今后程序的移植。本文,详细介绍使用CMSIS-RTOS建立任务的方法。 使用CMSIS-RTOS建立任务需要用到两个API,分别是osThreadDef和GprsTaskHandle,其具体定义如下:
[单片机]
<font color='red'>STM32</font>开发笔记43: 使用CMSIS-RTOS建立任务
STM32 ADC结合DMA数据采样与软件滤波处理
作为一个偏向工控的芯片,ADC采样是一个十分重要的外设。STM32集成三个12位精度18通道的内部ADC,最高速度1微秒,结合DMA可以解放CPU进行更好的处理。 ADC接口上的其它逻辑功能包括: ●同步的采样和保持 ●交叉的采样和保持 ●单次采样 模拟看门狗功能允许非常精准地监视一路、多路或所有选中的通道,当被监视的信号超出预置的阀值时,将产生中断。 由标准定时器(TIMx)和高级控制定时器(TIM1和TIM8)产生的事件,可以分别内部级联到ADC的开始触发和注入触发,应用程序能使AD转换与时钟同步。 12位ADC是一种逐次逼近型模拟数字数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。 ADC的输入时钟不得超
[单片机]
STM32之IIC通讯升级版--SHT30温湿度读取
针对上篇文章对于程序可移植性不强的问题进行优化,基本思路是首先搭建好IIC底层驱动程序,该程序可用于任何IIC通讯设备,然后针对不同的IIC设备单独编写应用程序,本篇文章仍以SHT30为例。 一、IIC底层驱动之myiic.h #ifndef __MYIIC_H #define __MYIIC_H #include sys.h //IO方向设置 #define SDA_IN() {GPIOC- CRH&=0XFFFF0FFF;GPIOC- CRH|=8 12;} #define SDA_OUT() {GPIOC- CRH&=0XFFFF0FFF;GPIOC- CRH|=3 12;} //IO操作函数
[单片机]
<font color='red'>STM32</font>之IIC通讯升级版--SHT30温湿度读取
彻底搞清printf在STM32上的使用
重定向printf ARMCC版本(keil MDK) 下面这段代码,在实现串口发送一个字节的函数后,可以在勾不勾选”微库“的情况下都可以正常使用printf函数。__MICROLIB是勾选微库后会被定义的宏,因而可以通过条件编译的方式兼容。 对应文件要包含 stdio.h 头文件,否则会提示FILE无定义。 #if !defined(__MICROLIB) #pragma import(__use_no_semihosting) void _sys_exit(int x) //避免使用半主机模式 { x = x; } struct __FILE { int handle; }; FILE __stdout; #endif
[单片机]
学习STM32(2)-IO-AFIO(复用功能IO和调试配置)
最近在学习STM32,在BZ上一篇关于的串口通信文章里有这么一段代码:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO,ENABLE); 当初是参考开发的里子写的一直对GPIOD或上 RCC_APB2Periph_AFIO 这句话的意思没搞懂,通过这几天在网上查找资料和看手册,终于高清楚了,不敢独享,希望能对跟我一样的新手有所帮助吧o( _ )o... STM32上有很多I/O口,也有很多的内置外设想I2C,ADC,ISP,USART等,为了节省引出管脚,这些内置外设基本上是与I/O口共用管脚的,也就是I/O管脚的复用功能。但是STM32还有一特
[单片机]
学习<font color='red'>STM32</font>(2)-IO-AFIO(复用功能IO和调试配置)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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