历史上的今天

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

正在发生

2019年09月05日 | STM32串口通信(一)

发布者:平安宁静 来源: eefocus关键字:stm32  串口通信  UART2  TTL 手机看文章 扫描二维码
随时随地手机看文章

关于STM32串口通信USART的一些个人浅见:


1:对STM32中文数据手册解读之后,相信大家对USART串行通信有些了解,学习51的时候也都接触过,使用串口只要弄明白原理就很简单了


发送和接收数据的过程从图上可以直观的看出

USART串口通信涉及到几个重要的寄存器


 1:)状态寄存器

2)数据寄存器


 

3)波特比率寄存器


 

例:若要设置比特率为9600,那么DIV就是468.75,则此寄存器的高12位应存值:468,低4位存值:0.75*16=12(十进制小数换算成十六进制小数);最后将整数和小数拼接:BRR=468<<4+12;(详细过程可参照源代码;)


4)控制寄存器1:

5)控制寄存器2:


主要配置停止位,时钟极性,时钟使能


6)控制寄存器3:


 涉及到硬件流控制,DMA配置等


发送数据:

接收数据:

相关程序:


中断函数:


void USART1_IRQHandler(void)

 {

        static u8 ch; 

        USART_ClearFlag(USART1 , USART_FLAG_TC);  


if(USART_GetITStatus(USART1, USART_IT_RXNE) != Bit_RESET)

{


       ch=USART_ReceiveData(USART1);

            while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == Bit_RESET);                                                        USART_SendData(USART1, ch);     

            while(USART_GetFlagStatus(USART1, USART_FLAG_TC));   

}

 }

主程序:


int main()

{

 usart_init();

  while(1);

}


配置程序:


void usart_init()

{


  GPIO_InitTypeDef  GPIO_InitStructure;

  USART_InitTypeDef USART_InitStructure;

  NVIC_InitTypeDef NVIC_InitStructure;

  USART_DeInit(USART1);


    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO|RCC_APB2Periph_USART1,ENABLE);  



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


 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;         

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOA,&GPIO_InitStructure);


USART_InitStructure.USART_BaudRate = 9600;           

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_Tx | USART_Mode_Rx;

USART_Init(USART1, &USART_InitStructure);


USART_Cmd(USART1, ENABLE);    


USART_ITConfig (USART1,USART_IT_RXNE,ENABLE);   


USART_ClearFlag(USART1,USART_FLAG_TC);

 

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); 


 NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;

 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;

 NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;

 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

 NVIC_Init(&NVIC_InitStructure); 

}


(以上内容均为个人浅见,如有不恰之处,请指正,谢谢!)

关键字:stm32  串口通信  UART2  TTL 引用地址:STM32串口通信(一)

上一篇:STM32输入捕获(一)
下一篇:STM32外部中断笔记(一)

推荐阅读

  近日,青海省绿色发电集团股份有限公司公布了招标结果,中标者为青海国投、协鑫集团德令哈光伏发电应用领跑地1、2、3号项目EPC总承包。投标文件递交的截止时间(投标截止时间,下同)为2018年9月25日11:00时。         此次项目的招标范围:青海国投、协鑫集团德令哈光伏发电应用领跑地1、2、3号项目EPC总承包,包括(但不仅限于)光伏区、35k...
关于外部中断前言:1:Cortex-M3允许具有较少中断源时使用较少的寄存器位指定中断源的优先级,因此,STM32吧指定中断优先级的寄存器为减少到4位,即AIRCR的高四位,于是对四位进行分组: 组别 分配情况 第0组 0:4 无抢先式优先级,16 个子优先级 第1组 1:3 2 个抢先式优先级,8 个子优先...
据国际数据公司(IDC)最新数据,欧洲,中东和非洲(EMEA)平板电脑市场同比增长23.8%,实现了自2013年以来最强劲的增长,在2020年第二季度达到1190万台。平板电脑市场增长的主要原因是今年疫情大流行,人们居家隔离需要购买用于休闲和教育的设备。今年第二季度,西欧平板电脑市场同比增长28.3%,而中欧和东欧(CEE)以及中东和非洲(MEA)分别同比增长2...
继8月11日奥迪发布Skysphere概念车之后,奥迪Grandsphere概念车于9月3日凌晨(北京时间)正式首发。该车是奥迪用于展示电动豪华未来愿景的三款“Sphere”系列概念车中的第二款,将在下周开幕的2021 IAA展会上正式亮相。奥迪Grandsphere概念车的目标,是打造“未来头等舱”,并给予前排驾乘者更加自由的空间。奥迪 Grandsphere ( 参数 | 询价 ) 概念车的车...

史海拾趣

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

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

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved