STM32_USART输入输出讲解

发布者:快乐球球最新更新时间:2017-09-15 来源: eefocus关键字:STM32  USART  输入输出 手机看文章 扫描二维码
随时随地手机看文章

今天总结STM32F103串口,以工程实例来讲述。

工程现象:1.间断发送字符

          2.接收中断(接收字符,并发送该字符)

 

软件工程下载地址(360云盘):

https://yunpan.cn/cPEI3zyQ7UqJv  访问密码ee52

 

讲述分如下几点:

 

一、初始化始终

 

这里的“时钟配置”函数在bsp.c文件下面;

使能串口1(RCC_APB2Periph_USART1)时钟。

 

二、USART1引脚配置


 

这里的“USART1引脚配置”函数在usart.c文件下面;

初始化串口使用引脚, 包含端口引脚、频率、输出类型。

 

三、串口配置

 

这里的“串口配置”函数在usart.c文件下面;

详见每一句后面都有注释。

四、串口中断配置

 

这里的“NVIC配置”函数在bsp.c文件下面;

主要分配中断控制、中断优先级。

 

五、主函数应用


 

这里的“主函数”函数在main.c文件下面;

间隔跳变LED、打印(发送)字符串。

 

六、中断函数

 

函数在stm32f10x_it.c文件下面;

功能:接收一个字符串,并发送。


关键字:STM32  USART  输入输出 引用地址:STM32_USART输入输出讲解

上一篇:STM32_TIM定时-中断
下一篇:STM32_TIM延时讲解

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

STM32的位带操作分析
8051单片机可以直接对某一位IO进行读写操作,而Cortex-M3的位带操作是8051位寻址区的加强版。使用位带操作后,可以使用普通的加载/存储指令对单一的比特进行读写操作。 一、相关概念。 位带区:支持位带操作的地址区。 位带别名区:对别名地址的访问最终作用到位带区的访问上。位带别名区对位带区的访问有个地址映射过程。 二、位带操作的原理 位带操作的最终目的是想对位带区的比特位进行独立的读写操作。但它是通过对位带别名区的操作来实现的。 具体过程如下: 对位带别名区进行读写访问,位带别名区通过地址映射关系映射到相应的位带区,对位带区进行原始比特的读写操作。 三、地址映射 上面对位带操作进行了简
[单片机]
<font color='red'>STM32</font>的位带操作分析
HardFault_Handler问题查找方法
STM32出现HardFault_Handler故障的原因主要有两个方面: 1、内存溢出或者访问越界。这个需要自己写程序的时候规范代码,遇到了需要慢慢排查。 2、堆栈溢出。增加堆栈的大小。 出现问题时排查的方法: 发生异常之后可首先查看LR寄存器中的值,确定当前使用堆栈为MSP或PSP,然后找到相应堆栈的指针,并在内存中查看相应堆栈里的内容。由于异常发生时,内核将R0~R3、R12、LR、PC、XPRS 寄存器依次入栈,其中LR即为发生异常前PC将要执行的下一条指令地址。 注意:寄存器均是32位,且STM32是小端模式。(参考Cortex-M3权威) 编写问题代码如下: void StackFlow(void)
[单片机]
HardFault_Handler问题查找方法
STM32单片机的按键检测程序设计
STM32的按键检测相对比较简单,首先按部就班的初始化连接的到的i/o,然后写一个按键扫描函数,这个和51单片机的差不多。 以下是一个比较典型的例子: 利用按键控制LED: key.h文件 #ifndef__KEY_H #define__KEY_H #include“sys.h“ #defineKEY0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)//读取按键0 #defineKEY1 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)//读取按键1 #defineKEY2 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)//读取按键2
[单片机]
<font color='red'>STM32</font>单片机的按键检测程序设计
(纯干货)使用STM32测量频率和占空比的几种方法
使用平台:官方STM32F429DISCOVERY开发板,180MHz的主频,定时器频率90MHz。 相关题目: (1)测量脉冲信号频率f_O,频率范围为10Hz~2MHz,测量误差的绝对值不大于0.1%。(15分) (2)测量脉冲信号占空比D,测量范围为10%~90%,测量误差的绝对值不大于2%。(15分) 思路一:外部中断 思路:这种方法是很容易想到的,而且对几乎所有MCU都适用(连51都可以)。方法也很简单,声明一个计数变量TIM_cnt,每次一个上升沿/下降沿就进入一次中断,对TIM_cnt++,然后定时统计即可。如果需要占空比,那么就另外用一个定时器统计上升沿、下降沿之间的时间即可。 缺点:缺陷显而易见,当频率提高,
[单片机]
(纯干货)使用<font color='red'>STM32</font>测量频率和占空比的几种方法
STM32 | ISP下载的原理是什么?
ISP方式下载程序原理 ISP:In System Programing,在系统中编程 在STM32F10xxx里有三种启动方式: 以ISP方式下载程序时需要把STM32的BOOT0引脚置1、BOOT1引脚置0,即从系统存储区(System Memory)启动。为什么设置从System Memory启动就可以使用串口来下载我们的程序呢?那是因为在芯片出厂前ST官方已经把一段自举程序(BootLoader程序)固化到这一块存储区。对于STM32F103ZET6来说,System Memory的起始地址为0x1FFFF000,可在芯片手册的内存映射图里找到: 其通过串口来接收数据并烧写到用户闪存存储器的起始地址(0x08000
[单片机]
<font color='red'>STM32</font> | ISP下载的原理是什么?
Stm32 RTC介绍相关笔记
1.由于最近一段时间要进行期末考试,所以很久没有动32了,从现在开始,可以再开始学了 2.RTC(REAL TIME CLOCK) 1.作为Stm32内部的实时时钟,可以看做一个独立的定时器,在代码的配置下,可以作为时钟日历的功能 2.注意:RTC的配置过程十分敏感,因为对于RTC的配置过程中,是在后备区域进行,由于系统在自动复位以后,自动会禁止后备寄存器和RTC(写保护),所以在配置的过程中要进行对写保护的撤销 3.RTC简图 4.配置重点: 因为RTC配置需要对后备区域进行配置,配置的时候要判断是否寄存器完成和同步,也要取消对备份区的写保护 1.初始化过程 #include del
[单片机]
<font color='red'>Stm32</font> RTC介绍相关笔记
STM32 HSE LSE晶振官方推荐
我打算选择 HSE : HC-49S-8 MHz贴片 LSE : DMX-26S 32768HZ贴片
[单片机]
<font color='red'>STM32</font> HSE LSE晶振官方推荐
stm32函数放入段section中
关键字,__attribute__((section)). 对于这样一个需求,不管你写多少个硬件底层初始化函数,我都能通过固定的循环进行执行,是不动的一个状态,这种实现方式,可以通过以下介绍的方式操作。 思路,有两种办法,一种是指定一个段,这个段需要固定,然后,在这个段之间的区域将函数写入进去。一种是直接将函数一直写入,编译器知道写的函数有多少个,调用编译器得到的函数个数来操作,对于写的函数个数同样灵活。 第一种办法: 指定段的办法。 操作示例: 先定义一个函数类型。 typedef int (*MyFun)(void); #define INIT_FUN(fn,level)
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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