STM32之三通过串口想PC机打印信息

发布者:自由探索最新更新时间:2024-10-18 来源: cnblogs关键字:STM32  串口  PC机  打印信息 手机看文章 扫描二维码
随时随地手机看文章

作为基本的通信手段,串口通信操作简单,使用方便,在几乎各种单片机芯片上都具备,我们今天就是要学着操作下stm32的串口,使之能与pc简单的通信,我们实现向PC机发送字符程序


像往常一样,我们首先要建立两个文件,即uart.c和uart.h文件,下面来看下我们来看看串口配置,直接上程序
void uart_init(u32 bound)
{ // NVIC_InitTypeDef NVIC_InitStructure;//建立各自的对象,然后对各自进行初始化
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
//串口使能USART1,GPIOA时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);

USART_DeInit(USART1);//串口1复位

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); //  初始化GPIOA.9

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;   // 设置为复用浮空输入
GPIO_Init(GPIOA,&GPIO_InitStructure);  //    初始化GPIOA.10

USART_InitStructure.USART_BaudRate = bound;  //波特率设置,可以用形参控制
USART_InitStructure.USART_WordLength = USART_WordLength_8b; //字长为8位
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_Rx|USART_Mode_Tx; //收发模式
USART_Init(USART1,&USART_InitStructure);//初始化串口  
USART_Cmd(USART1,ENABLE); //使能串口
}

    每句程序后面注释都非常明了,我们配置串口遵循以下步骤:
    (1)串口时钟使能,GPIO时钟使能
    (2)串口复位
    (3)GPIO端口模式设置
    (4)串口参数初始化
    (5)初始化NVIC并且开启中断(如果需要串口中断,我们这里没有利用中断)
    (6)使能串口

串口配置完了,我们可以利用以下几句程序来实现用printf直接打印而不需要再进行其他设置

这几句话,每次我们用到串口的时候都可以添加到uart.c文件中,用起来printf()函数非常方便

编写完uart.c以及uart.h后,我们就要处理主函数main了。。好了,直接上图

主函数就非常简单了,有人不禁要问,怎么没有设置系统时钟,其实我们在delay_init()函数中设置了,就像上面注释的一样,方便的设置了系统时钟,波特率也在串口初始化的时候建立了形参,可以方便的修改波特率,在while循环中直接调用printf函数,方便直接的向PC机打印信息

就这么简单。。。

关键字:STM32  串口  PC机  打印信息 引用地址:STM32之三通过串口想PC机打印信息

上一篇:STM32之五外部中断(下)
下一篇:STM32让printf通过串口打印及自定义printf函数

推荐阅读最新更新时间:2024-11-18 19:56

STM32串口通信USART(二)---DMA方式
刚接触到DMA的时候,一头雾水,只知道方便、快捷,但不知道该怎么使用,后来弄明白原理之后就轻松了很多,但理解的还不是很透,所以希望把自己的理解写出来,和大家分享一下! 形象的说,DMA就像一个快递中转站,负责把数据从始发地搬到目的地,只要他负责的仓库有货,他就开始搬运,没货就等着,除非你把它关了。就像机器人搬东西一样,首先要告诉它从哪搬,搬到哪?东西有多大?需要搬几趟?需要搬运的东西是不是都在一起?搬完后是不是扔在那就行了,还是要放好? 到芯片里,数据就是货物,把数据从一个地方移到另一个地方。你只要告诉它怎么移到就行了,就像控制一个机器人一样。并不是多有的外设都能有机会使用DMA通道,而且,一条通道上被外设使用后,通道上的
[单片机]
<font color='red'>STM32</font><font color='red'>串口</font>通信USART(二)---DMA方式
详解stm32的CAN控制器
首先简单介绍一下CAN总线,关于CAN总线是谁发明的,CAN总线的历史,CAN总线的发展,CAN总线的应用场合,这些,通通不说。这里只是以我个人理解,简单说说CAN通信。CAN总线的端点没有地址(除非自己在帧里定义地址),CAN总线通信不用地址,用标识符,不是单独的谁发给谁,而是,你总是发送给整个网络。然后每个节点都有过滤器,对网络上的传播的帧的标识符进行过滤,自己想要什么样的帧,可以设置自己的过滤器,接收相关的帧信息。如果两个节点同时发送怎么办?这个不用我们担心,CAN控制器会自己仲裁,让高优先级的帧先发。 然后我们可以了解一下stm32的CAN控制器。 如上图所示,stm32有两个can控制器,can1(主),和can2
[单片机]
详解<font color='red'>stm32</font>的CAN控制器
基于STM32设计的智能空调
一、项目背景 随着人们生活水平的不断提高,对居住环境的舒适度要求也越来越高。空调作为一种重要的家电设备,已经成为了现代家庭中必不可少的一部分。本文介绍了一种基于STM32的智能空调设计方案,可以自动地根据环境温度进行温度调节。 二、设计思路 2.1 整体构架 智能空调系统由温度检测传感器、微控制器、OLED显示屏、按键及直流电源等组件构成。传感器用于检测环境温度,通过微控制器进行处理后,将结果输出到OLED显示屏上展示。按键可根据需求调整预设阀值,切换模式等操作。 2.2 硬件设计 (1)温度检测传感器 选择DS18B20数字温度传感器作为本系统的温度检测器件。该传感器具有精度高,响应速度
[单片机]
基于<font color='red'>STM32</font>设计的智能空调
STM32的硬件I2C设计有BUG
坊间一直流传着一个传说~STM32的硬件I2C设计有BUG,最好不要用,用软件I2C比较靠谱。长久以来,为了不必要的麻烦,我也一直没有用过硬件I2C,主要是软件I2C也比较方便,基本上任意端口都可以用。 最近画了块板子,正好用到了I2C,就顺便来测试一下硬件I2C是不是真的像有些人说的不好用。 测试硬件:STM32F407VET6+AT24C64测试软件:STM32CubeMX v6.1.1HAL库:STM32CubeF4 Firmware Package V1.25.2 STM32CubeMX配置 使用STM32CubeMX配置很方便,时钟等基础配置不再详细介绍,直接看I2C配置如下: 这里的速度模式选择为标准模式,
[单片机]
<font color='red'>STM32</font>的硬件I2C设计有BUG
STM32F103配置串口(USART)流程
1:设置中断分组 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); 2:使能用作串口(RX/TX)的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE); //串口时钟和GPIO时钟都需要设置 3:GPIO模式设置 GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9; //TX GPIO_InitStruct.GPI
[单片机]
单片汇编实验五-1:单片PC串行通信实验
实验要求:AT89S52串行通信口工作在方式1,8位UART方式,允许接收,9600bps。在PC机上运行串口调试软件。编程实现:单片机接收PC机发送的数据并回送给PC机显示,可同时送LED显示; //This program is copyed on the internet; //I even don't know the author ;here I thank him //The dare ;打开任意串口调试软件 ;打开对应的串口,可以在设备管理器中看到 ;设置波特率为9600,8个数据位,1个停止位,无奇偶校验 ;在发送栏输入任意数字或者字符串,点击发送,接收区能接收到相同的信息 ;发送格式与接收格式必须相同,
[单片机]
STM32——高级定时器、通用定时器、基本定时器的区别
TIM1和TIM8定时器的功能包括【增强型】: ● 16位向上、向下、向上/下自动装载 计数器 ● 16位可编程(可以实时修改) 预分频器 ,计数器时钟频率的分频系数为1~65535之间的任意数值 ● 多达4个独立通道: ─ 输入捕获 ─ 输出比较 ─ PWM生成(边缘或中间对齐模式) ─ 单脉冲模式输出 ● 死区时间可编程的互补输出 ● 使用外部信号控制定时器和定时器互联的同步电路 ● 允许在指定数目的计数器周期之后更新定时器寄存器的重复计数器 ● 刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态 ● 如下事件发生时产生中断/DMA: ─ 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发) ─
[单片机]
stm32使用SDIO方式+FATFS读写内存卡
针对stm32f103zet 单片机完成对内存卡的读写操作,可以查看内存卡目录,写入文件,删除文件,更改文件,清空文件内容等,使得stm32f103zet单片机能有一个较大的外部存储空间,可跑文件系统。 内存卡分为有普通卡和高速卡SDHC卡之分 普通内存卡一般大小在2g以下 SD高速卡一般在8g~16g STM32F103ZE-EK开发板原理图 :https://pan.baidu.com/s/1smpn8VN 普通内存卡老式内存卡程序 稳定版本程序代码 :https://pan.baidu.com/s/1mjO9CDU 高速内存卡HCsdcard程序 某些程序待完善程序代码 :https://pan.baidu.co
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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