STM32 基础系列教程 9 – 串口通信

发布者:EtherealLight最新更新时间:2019-05-05 来源: eefocus关键字:STM32  基础系列教程  串口通信 手机看文章 扫描二维码
随时随地手机看文章

前言


学习stm32 usart串口的使用,学会用Printf() 函数打印信息。


示例详解


基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是 STM32F103c8t6, 使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。

本示例所用的最小系统板原理图:


从本节开始,关于CUBEMX工具及KEIL工具的操作将不再细讲,如果还有不熟悉的可以查看之前的教程文档。下面直接介绍工程配置:



系统时钟树


USART1配置


引脚配置(保持默认即可)

 


引脚保持默认即可,当然实际应用中可以根据自己的需求对其进行重映射。


工程代码

在main.c 中加入如下图所示代码:


要使上面代码能成功在串口一打印出数据还需实现 fputc 函数,具体实现如下:

到此,使用stm32 异步串实,并用printf()函数实现在串口中输出数据的实验就完成了,将MCU的PA9(TX)引脚接到串口工具并用串口上位机接收数据,可以看到所打每隔1S 程序会打印出一条数据。

 

 


OK,本期实验完成!下期见!


关键字:STM32  基础系列教程  串口通信 引用地址:STM32 基础系列教程 9 – 串口通信

上一篇:STM32 基础系列教程 8 - 互补PWM
下一篇:STM32 基础系列教程 7 - 单脉冲PWM

推荐阅读最新更新时间:2024-11-13 17:17

CORTEX-M3与STM32_M3内核STM32的三相多功能电能表解决方案
电能表作为电能计量的基本设备,受到国家电力部门的长期重视,电能表生产企业更是不遗余力地寻求设计与开发性能俱佳且成本更低的解决方案。目前国内的电能表设计已经走过了由8位MCU向通用DSP甚至专用DSP的变革,通用DSP的应用方案的劣势在于DSP的专业应用和嵌入程度不够深的问题,成本偏高;而专用 DSP功能相对固定,这样给电能表设计和生产厂家带来功能差异化空间不足的困难。基于ARM的方案也已经出现,但是适合应用的ARM7 TDMI在性能上不尽人意,同时外设资源不足;而更高端的ARM9系统的复杂程度很高,成本也较高。选择一颗合适且低成本的微处理器日益成为电能表行业的关键所在,直到意法半导体公司(STMicroelectronic公司,下
[单片机]
CORTEX-M3与STM32_M3内核<font color='red'>STM32</font>的三相多功能电能表解决方案
STM32】电源控制、低功耗模式(实例:待机模式)
STM32F1xx官方资料: 《STM32中文参考手册V10》-第4章4.3小节 低功耗模式 STM32的电源控制 STM32的电源框图 STM32的工作电压(VDD)为2.0~3.6V。通过内置的电压调节器提供所需的1.8V电源。 当主电源VDD掉电后,通过VBAT脚为实时时钟(RTC)和备份寄存器提供电源。 下面是STM32的电源框图: 注意:框图中的VDDA和VSSA必须分别联到VDD和VSS。 独立的A/D转换器供电和参考电压 为了提高转换的精确度,ADC使用一个独立的电源供电,过滤和屏蔽来自印刷电路板上的毛刺干扰。 ADC的电源引脚为VDDA; 独立的电源地VSSA。 如果有VREF-引脚(
[单片机]
【<font color='red'>STM32</font>】电源控制、低功耗模式(实例:待机模式)
STM32的ADC单次转换设计
下面分别为库函数和直接操作寄存器的两个范便,我都已测试通过 使用此程序前必要对GPIO设好为模拟输入方式 =====================================库函数版========================================= void AD_CONFIG_SINGLE(void ) { //先配置IO口: ADC_InitTypeDef adcInitStruct; ////PB1 作为模拟通道输入引脚 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 , ENABLE);//使能ADC和GPIOC时钟 //配置ADC: //将ADC配置成非
[单片机]
<font color='red'>STM32</font>的ADC单次转换设计
STM32 usb_pwr.c文件分析
usb_pwr.c 这个文件看文件名就知道跟功耗有关了,有很多的状态:上电、掉电、挂起、恢复。 当首先是usb的上电和断电函数的定义了。 usb上电函数如下: /******************************************************************************* * Function Name : PowerOn * Description : 上电 * Input : None. * Output : None. * Return : USB_SUCCESS. *******************************************
[单片机]
STM32 禁用或开启总中断
STM32在使用时有时需要禁用全局中断,比如MCU在升级过程中需禁用外部中断,防止升级过程中外部中断触发导致升级失败。 ARM MDK中提供了如下两个接口来禁用和开启总中断: __disable_irq(); // 关闭总中断 __enable_irq(); // 开启总中断 但测试发现这样一个问题,在关闭总中断后,如果有中断触发,虽然此时不会引发中断,但在调用__enable_irq()开启总中断后,MCU会立即处理之前触发的中断。这说明__disable_irq()只是禁止CPU去响应中断,没有真正的去屏蔽中断的触发,中断发生后,相应的寄存器会将中断标志置位,在__enable_irq()开启中断后,由于相应的中断
[单片机]
keil5配置stm32库函数开发
在将模板文件添加到工程中后,      1、点击魔术棒,选择C/C++,添加头文件的路径;    2、C/C++里面的define内填入:STM32F10X_MD,USE_STDPERIPH_DRIVER; 3、Output-- select。。选择Output文件夹(为了好看) 根目录:   
[单片机]
keil5配置<font color='red'>stm32</font>库函数开发
STM32通信接口(一)串口
什么是串口 毫无疑问,串口是我们接触到的第一种通信接口,无论是串口调试还是与外设的通信,串口的用途十分广。 关于同步和异步,最简单的区分方法就是看在通信时需不需要接时钟线,像SPI、I2C等通信接口都需要接CLK线,毫无疑问它们都是同步的,而串口是一种拥有两种模式的通信接口,可以选择是否连接时钟线。至于串行和并行,区分的方法就是看数据是一位一位的发送还是以一个字节(8位)或16位的格式发送,显然并口的数据线就要多的多,而串行接口的数据线就少的多,若只发送或只接受(单工),一根数据线就够了,半双工或全双工的通信接口也一般只需要两条数据线。 UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收
[单片机]
<font color='red'>STM32</font>通信接口(一)串口
STM32入门-时钟篇
STM32中使用任何一个外设都必须打开相应的时钟。在STM32中有5个时钟源可供用户选择: 1.HSI高速内部时钟,RC震荡器,频率为8MHz。 2.HSE高速外部时钟,右英/陶瓷谐振器,或着外部时钟源,4MHz-16MHz. 3.LSI内部低速时钟,RC震荡器频率为40Hz。 4.LSE外部低速时钟,接频率为32.768KHz的石英晶体。 5.PLL锁相环频输出,时钟源可选为HIS/2、HSE或HSE/2。倍频可选2-16倍,但其输出频率最大不能超过72MHz。 系统时钟SYSCLK,它是供STM32中绝大部分器件工作的时钟源,系统时钟可选择为PLL输出、HSI或者HSE。系统时钟的做大频率为72MHz,它通过AHB分频器分频后
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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