STM32串口中断使用

发布者:影子猎人最新更新时间:2021-05-18 来源: eefocus关键字:STM32  串口  中断 手机看文章 扫描二维码
随时随地手机看文章

简介:STM32串口中断使用:配置串口时钟在void Rcc_Configuration(void)函数中实现,配置串口管脚在void UsartGPIO_Configuration(void)中实现;初始化参数设置串口中断配置。


以提高CPU的利用率。在程序中处理流程如下:

 

一:串口初始化

1.配置串口时钟

    在void Rcc_Configuration(void)函数中实现

1.void Rcc_Configuration(void)


1.{


2.    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,ENABLE);


3.    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);


4.}

 

2.配置串口管脚

    在void UsartGPIO_Configuration(void)中实现

1.void UsartGPIO_Configuration(void)


1.{


2.    GPIO_InitTypeDef GPIO_InitStruct;


3.


4.    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;


5.    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;


6.    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;


7.


8.    GPIO_Init(GPIOA, &GPIO_InitStruct);


9.


10.    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;


11.    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10;


12.    


13.    GPIO_Init(GPIOA, &GPIO_InitStruct);


14.}

 


3.初始化参数设置


1.USART_InitStruct.USART_BaudRate = 115200;


1.    USART_InitStruct.USART_StopBits = USART_StopBits_1;


2.    USART_InitStruct.USART_WordLength = USART_WordLength_8b;


3.    USART_InitStruct.USART_Parity = USART_Parity_No;


4.    USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;


5.    USART_InitStruct.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;


6.    


7.    USART_Init(USART1, &USART_InitStruct);

    注意:设置参数时只需要向串口初始化数据结构体中写入相应的配置参数,然后调用USART_Init函数将信息写入处理器即可。



4.串口中断配置

    调用USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);函数实现。允许串口1接收中断。


5.调用USART_Cmd(USART1, ENABLE);函数使能串口1中断。


    完整的串口初始化代码如下:



1.void usart_Configuration(void)


1.{


2.    USART_InitTypeDef USART_InitStruct;


3.


4.    Rcc_Configuration();


5.


6.    UsartGPIO_Configuration();


7.


8.    USART_InitStruct.USART_BaudRate = 115200;


9.    USART_InitStruct.USART_StopBits = USART_StopBits_1;


10.    USART_InitStruct.USART_WordLength = USART_WordLength_8b;


11.    USART_InitStruct.USART_Parity = USART_Parity_No;


12.    USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;


13.    USART_InitStruct.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;    


14.    USART_Init(USART1, &USART_InitStruct);


15.


16.    USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);


17.    USART_Cmd(USART1, ENABLE);    


18.}


关键字:STM32  串口  中断 引用地址:STM32串口中断使用

上一篇:STM32看门狗的使用
下一篇:STM32的看门狗使用方法

推荐阅读最新更新时间:2024-11-10 05:08

STM32学习之:NVIC的初步理解
1 对NVIC的理解 CM3支持硬件中断嵌套,分为抢占式优先级和亚优先级,使用规则主要有,抢占优先级高级别的可以打断低级别的,同一级别的抢占优先级同时发生时,亚当优先级高的先发生中断,若是相同,则按硬件排列顺序发生。若是有一个亚优先级正在执行中断,同一级别的其它亚优先级发生时,则先挂起,等此中断执行完再执行! 从库函数中找到优先级分组模式: #define NVIC_PriorityGroup_0 ((uint32_t)0x700) /* 0 bits for pre-emption priority 4 bits for subpriority */
[单片机]
利用定时器中断使用独立按键
按下独立按键s2(键盘第一个按键)数码管显示1; 按下独立按键s3(键盘第一个按键)数码管显示2; 按下独立按键s5(键盘第一个按键)数码管显示4; #include reg52.h #include intrins.h #define uint unsigned int #define uchar unsigned char sbit DU = P2^6;//数码管段选 sbit WE = P2^7;//数码管位选 sbit s2 = P3^0;//独立按键s2 sbit s3 = P3^1;//独立按键s3 sbit s5 = P3^3;//独立按键s5 uchar num ; //共阴极数码管段选表1、2、
[单片机]
stm32 PWM & 定时器总结
学习后发现stm32的定时器功能确实很强大,小总结一下方便以后使用的时候做参考。Stm32定时器一共分为三种:tim1和tim8是高级定时器,6和7是基本定时器,2—5是通用定时器。从名字就可以看得出来主要功能上的差异。今天我主要是用定时器做pwm输出,所以总结也主要是针对pwm方面的。 先大致说下通用和高级定时器的区别。通用的可以输出四路pwm信号互不影响。高级定时器可以输出三对互补pwm信号外加ch4通道,也就是一共七路。 所以这样算下来stm32一共可以生成4*5+7*2=30路pwm信号。接下来还有功能上的区别:通用定时器的pwm信号比较简单,就是普通的调节占空比调节频率(别的不常用到的没去深究);高级定时器的还带有互补输
[单片机]
单片机与单片机之间串口通信问题
需要注意TXD与RXD所指的均是对于本身来说的,所以两者之间应该使用交叉串口来进行连接 ,否则会没有数据。 另外可以将一个单片机1的TXD接到单片机2的RXD,而另单片机2的TXD接到电脑上去,这样就可以得到反馈的数据,可以做调试处理。 另外在网站上看到一个说串口缓冲的问题,好像我以前也碰到过,后来也不知道怎么解决的。。 记录一下,我将数据读取回来后存于一数组中,然后进行数据处理。但由于处理程序耗时过长,然后再读取相关数组中数据时,其值已改变为下一次通讯命令数据了!故需在处理程序开始定义临时变量来存取相关数据,即可解决该问题。
[单片机]
第30章 STM32F429的系统bootloader之串口IAP固件升级
30.1 初学者重要提示 学习本章节前,务必优先学习第28章。 本章用到的相关软件和文档下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=96573 。 本章节的串口IAP下载软件使用STM32CubeProg,此软件实现了之前的DfuSe,STLINK小软件和Flashloader三合一,并且支持外部EEPROM,NOR Flash,SPI Flash,NAND Flash等烧写,也支持OTA编程。 使用系统bootloader做串口IAP升级时,MicroUSB接口不要接线到电脑端,因为这会导致系统bootloader工作在USB DFU模式,无法再使用串口I
[单片机]
第30章 STM32F429的系统bootloader之<font color='red'>串口</font>IAP固件升级
面向对象之编写驱动程序--中断(linux系统、s3c6410开发板)
/*------------------------- *先申明下,本人是个菜鸟,刚开始接触驱动程序编写,交代下开发环境(主机系统redhat6.3,开发板ARM-s3c6410) 以watchdog (看门狗,俗称狗中断)为例,编写简单的中断(驱动) -------------------------*/ #include linux/init.h #include linux/module.h #include asm/io.h #include linux/cdev.h #include linux/fs.h #include linux/irq.h #include linux/interrupt.h MO
[单片机]
快速学ARM--中断向量控制器VIC
技术生涯,半生荣辱,每天都是生活在痛并快乐中,我讨厌的东西总是不得不天天面对,麻木和无所谓也就是这样产生的.但对于技术的好奇和追求是我下半生依然不会停止的事情,虽然驽钝,只要每日有所得,也有所追求足以. 这两天在忙于另外一个程序,由于上家的延误,使我又有了点空闲,继续来学习已经不是新事物的新事物.:-) 前几天决定了从简单的单任务Arm程序学起,放下手中的uC/OS-II书籍,发现手中又少了可以阅读的东西.好在网上有很多可以参考的资料,只是这些资料不是专为LPC2400写的.不过没关系,手里还有LPC2400的datasheet,对照的看就可以了.Arm的原理大同小异,只是型号之间有所区别罢了. 下面的这本书对初学者很
[单片机]
GD32单片机和STM32单片机的区别
一、前言 什么GD32? GD32是国内开发的一款单片机,据说开发的人员是来自ST公司的,GD32也是以STM32作为模板做出来的。 所以GD32和STM32有很多地方都是一样的,不过GD32毕竟是不同的产品,不可能所有东西都沿用STM32,有些自主开发的东西还是有区别的。相同的地方我们就不说了,下面我给大家讲一下不同的地方。 二、区别 1、内核 GD32采用二代的M3内核,STM32主要采用一代M3内核,下图是ARM公司的M3内核勘误表,GD使用的内核只有752419这一个BUG。 2、主频 使用HSE(高速外部时钟):GD32的主频最大108M,STM32的主频最大72M 使用HSI(高速内部时钟):GD32的主频最大10
[单片机]
GD32单片机和<font color='red'>STM32</font>单片机的区别
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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