1. <noscript id="xKxEg"><button id="xKxEg"><th id="xKxEg"></th></button></noscript>

      1. 电子资讯网 > 控制/MCU > 正文

        如何采用STM32单片机串口接收数据

        2020年04月10日 15:03 ? 次阅读

        0目标1STM32串口简介

        2硬件设计3软件设计

        4下载验证

        0.目标

        利用串口1不停的打印信息到电脑上,同时接收从串口发过来的数据,把发送过来的数据直接送回给电脑。

        如何采用STM32单片机串口接收数据

        1.STM32串口简介

        串口设置的一般步骤可以总结为如下几个步骤:

        1)串口时钟使能,GPIO时钟使能

        2)串口复位

        3) GPIO端口模式设置

        4)串口参数初始化

        5)开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)

        6)使能串口

        7)编写中断处理函数

        注:对于复用功能的IO,我们首先要使能GPIO时钟,然后使能复用功能时钟,同时要把GPIO模式设置为复用功能对应的模式。

        查看手册《STM32 中文参考手册 V10》P110 的表格“8.1.11 外设的 GPIO 配置:

        如何采用STM32单片机串口接收数据

        2硬件设计

        (1)LED0接PA0

        (2)串口1

        3.软件设计

        新建工程:

        如何采用STM32单片机串口接收数据

        其中SYSTEM下放置原子哥提供的三个文件夹delay、sys、uart(及其文件),HARDWARE下建LED文件夹,及其内建LED.C与LED.H文件。

        uart中串口函数:

        voiduart_init(u32bound){

        //GPIO端口设置

        GPIO_InitTypeDefGPIO_InitStructure;

        USART_InitTypeDefUSART_InitStructure;

        NVIC_InitTypeDefNVIC_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE);//使能USART1,GPIOA时钟

        //USART1_TXPA.9

        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//PA.9

        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//复用推挽输出

        GPIO_Init(GPIOA,&GPIO_InitStructure);

        //USART1_RXPA.10

        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;

        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//浮空输入

        GPIO_Init(GPIOA,&GPIO_InitStructure);

        //Usart1NVIC配置

        NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;

        NVIC_InitStructure.NVIC_IRQChannelPreempTIonPriority=3;//抢占优先级3

        NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;//子优先级3

        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//IRQ通道使能

        NVIC_Init(&NVIC_InitStructure);//根据指定的参数初始化VIC寄存器

        //USART初始化设置

        USART_InitStructure.USART_BaudRate=bound;//一般设置为9600;

        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_ITConfig(USART1,USART_IT_RXNE,ENABLE);//开启中断

        USART_Cmd(USART1,ENABLE);//使能串口

        }

        LED.c内容:

        #include“led.h”

        //初始化PA0为输出口。并使能这个口的时钟

        //LEDIO初始化

        voidLED_Init(void)

        {

        GPIO_InitTypeDefGPIO_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能PA端口时钟

        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;//LED0--》PA0端口配置

        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出

        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//IO口速度为50MHz

        GPIO_Init(GPIOA,&GPIO_InitStructure);//根据设定参数初始化GPIOA0

        GPIO_SetBits(GPIOA,GPIO_Pin_0);//PA0输出高

        }

        led.h:

        #ifndef__LED_H

        #define__LED_H

        #include“sys.h”

        #defineLED0PAout(0)//PA0

        voidLED_Init(void);//初始化

        #endif

        主函数:

        #include“led.h”

        #include“delay.h”

        #include“sys.h”

        #include“usart.h”

        intmain(void)

        {

        u8t;

        u8len;

        u16TImes=0;

        delay_init();//延时函数初始化

        NVIC_ConfiguraTIon();//设置NVIC中断分组2:2位抢占优先级,2位响应优先级

        uart_init(9600);//串口初始化为9600

        LED_Init();//LED端口初始化

        while(1)

        {

        if(USART_RX_STA&0x8000)

        {

        len=USART_RX_STA&0x3f;//得到此次接收到的数据长度

        printf(“\r\n您发送的消息为:\r\n\r\n”);

        for(t=0;t

        {

        USART_SendData(USART1,USART_RX_BUF[t]);//向串口1发送数据

        while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束

        }

        printf(“\r\n\r\n”);//插入换行

        USART_RX_STA=0;

        }else

        {

        TImes++;

        if(times%5000==0)

        {

        printf(“\r\n口袋里的超超 串口实验\r\n”

        下载发烧友APP

        打造属于您的人脉电子圈

        关注电子资讯微信

        有趣有料的资讯及技术干货

        关注发烧友课堂

        锁定最新课程活动及技术直播

        电子资讯观察

        一线报道 · 深度观察 · 最新资讯
        收藏 人收藏
        分享:

        评论

        相关推荐

        STM32单片机SPI极性和相位的设置方法

        SPI是英语Serial Peripheralinterface的缩写,顾名思义就是串行外围设备接口...

        发表于 2020-04-10 15:04 ? 0次阅读
        STM32单片机SPI极性和相位的设置方法

        STM32单片机固件库建立工程的方法及步骤

        1,新建项目,在新建工程的目录下新建几个文件夹: A,CORE (用来存放启动文件) B...

        发表于 2020-04-10 14:43 ? 8次阅读
        STM32单片机固件库建立工程的方法及步骤

        STM32单片的启动过程解析

        STM32启动文件详细解析(V3.5.0) 以:startup_stm32f10x_hd.s为例 ...

        发表于 2020-04-10 14:33 ? 0次阅读
        STM32单片的启动过程解析

        如何采用STM32单片机读取可变长度数据到内存

        STM32的串口有监测总线是否处于空闲的功能,我们可以使用这个功能,当数据传输完总线变成空闲状态时产...

        发表于 2020-04-10 14:33 ? 4次阅读
        如何采用STM32单片机读取可变长度数据到内存

        Labview串口数据处理,新手求问

        发表于 2020-04-10 10:43 ? 50次阅读
        Labview串口数据处理,新手求问

        如何采用STM32单片机中断向量控制器NVIC来...

        先占优先级的概念等同于51单片机中的中断。假设有两中断先后触发,已经在执行的中断先占优先级如果没有后...

        发表于 2020-04-10 16:17 ? 27次阅读
        如何采用STM32单片机中断向量控制器NVIC来...

        stm32单片机按键控制的用法解析

        1 /* 2 ::按键控制 3 PA8接LED,PE2接按键 4 */ 5 ...

        发表于 2020-04-10 16:14 ? 44次阅读
        stm32单片机按键控制的用法解析

        stm32f0用串口2下载不成功

        发表于 2020-04-10 08:47 ? 103次阅读
        stm32f0用串口2下载不成功

        STM32单片机串口DMA解析

        STM32有两个DMA控制器(DMA2只存在于大容量产品中),DMA1有7个通道,DMA2有5个通道...

        发表于 2020-04-10 15:40 ? 25次阅读
        STM32单片机串口DMA解析

        STM32单片机对TFTLCD的驱动设计

        TFTLCD使用80并口,80 并口有如下一些信号线: CS: TFTLCD 片选信号。 ...

        发表于 2020-04-10 14:42 ? 54次阅读
        STM32单片机对TFTLCD的驱动设计

        请问有没有32可用的数据压缩算法?

        发表于 2020-04-10 08:57 ? 115次阅读
        请问有没有32可用的数据压缩算法?

        STM32单片机半主机模式的应用

        若出现如下编译错误:Error: L6915E: Library reports error: __...

        发表于 2020-04-10 15:43 ? 59次阅读
        STM32单片机半主机模式的应用

        STM32单片机PID算法的原则及应用方法

        一、总体原则 PID调试一般原则 a.在输出不振荡时,增大比例增益P。 b.在输出...

        发表于 2020-04-10 15:31 ? 70次阅读
        STM32单片机PID算法的原则及应用方法

        STM32单片机定时器的时钟源设置

        名为TIMx的有八个,其中TIM1和TIM8挂在APB2总线上,而TIM2-TIM7则挂在APB1总...

        发表于 2020-04-10 15:30 ? 35次阅读
        STM32单片机定时器的时钟源设置

        如何将STM32单片机中的函数调用到入口参数

        STM32—数组作为被调用函数的入口参数时,要两个条件, 1:数组首地址 2:数组长度 ...

        发表于 2020-04-10 15:05 ? 54次阅读
        如何将STM32单片机中的函数调用到入口参数

        STM32F0内部RC时钟精度可靠的吗?

        发表于 2020-04-10 08:42 ? 80次阅读
        STM32F0内部RC时钟精度可靠的吗?

        分享一个自己在MiniKit-XMC4500-F144-V1上做的串口小程序

        发表于 2020-04-10 11:03 ? 69次阅读
        分享一个自己在MiniKit-XMC4500-F144-V1上做的串口小程序

        求教为什么串口接收数据总丢包

        发表于 2020-04-10 08:43 ? 108次阅读
        求教为什么串口接收数据总丢包

        用Proteus在51单片机进行串口连接

        由于用的是Proteus来模拟串口(我的笔记本电脑根本没串口),所以需要一个虚拟串口的软件。推荐使用...

        发表于 2020-04-10 11:23 ? 123次阅读
        用Proteus在51单片机进行串口连接

        STM32F105系列单片机对USB设备电路的设...

        当STM32F105配置为USB设备时, PA9/OTG_FS_VBUS是用来检测presense ...

        发表于 2020-04-10 15:10 ? 85次阅读
        STM32F105系列单片机对USB设备电路的设...

        STM32单片机SysTick系统滴答功能解析

        其实,SysTick能实现的功能,都可以由TIM来实现。SysTick无非就是定时中断的功能,它完全...

        发表于 2020-04-10 14:27 ? 56次阅读
        STM32单片机SysTick系统滴答功能解析

        I.MX6-DEMO评估板快速启动

        发表于 2020-04-10 10:10 ? 744次阅读
        I.MX6-DEMO评估板快速启动

        X164F_ASC_SSC_IIC例程

        发表于 2020-04-10 09:46 ? 52次阅读
        X164F_ASC_SSC_IIC例程

        xmc1301flash写入数据后无法正常启动

        发表于 2020-04-10 09:44 ? 66次阅读
        xmc1301flash写入数据后无法正常启动

        STM32F030串口中断无法进入

        发表于 2020-04-10 08:40 ? 115次阅读
        STM32F030串口中断无法进入

        如何采用STM32单片机来产生PWM输出

        STM32的定时器除了基本定时器TIM6和TIM7之外,其他的定时器都可以用来产生PWM输出,其中高...

        发表于 2020-04-10 16:27 ? 217次阅读
        如何采用STM32单片机来产生PWM输出

        如何升级STM32单片机的代码

        bootloader设置: static void check_boot_mode(void)...

        发表于 2020-04-10 15:53 ? 78次阅读
        如何升级STM32单片机的代码

        STM32单片机的PWM输入捕获模式设计

        (TIM_GetITStatus(TIM3,TIM_IT_CC1)==SET)//{ic1=TIM_...

        发表于 2020-04-10 14:50 ? 92次阅读
        STM32单片机的PWM输入捕获模式设计

        STM32单片机的FSMC对TFT的驱动

        开始只是谈到别人对FSMC的理解,注意这里只讨论FSMC控制TFT,也就是在FSMC的NOR\PSR...

        发表于 2020-04-10 14:22 ? 70次阅读
        STM32单片机的FSMC对TFT的驱动

        STM32单片机对NAND Flash的读写以及...

        NAND Flash的容量较大。整片Flash分为若干个块(Block),每个Block分为若干个页...

        发表于 2020-04-10 15:47 ? 466次阅读
        STM32单片机对NAND Flash的读写以及...

        STM32单片机对Systick心跳定时器的设计

        用途: 1.产生操作系统的时钟节拍 2.便于不同处理器之间程序移植 SysTick...

        发表于 2020-04-10 15:44 ? 80次阅读
        STM32单片机对Systick心跳定时器的设计

        如何采用STM32单片机实现IAP功能

        IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运...

        发表于 2020-04-10 15:33 ? 82次阅读
        如何采用STM32单片机实现IAP功能

        STM32单片机的独立看门狗和窗口看门狗的特点及...

        IWDG是一个独立看门狗,具有独立于系统的时钟,与片外看门狗更为相似,使用片内独立的阻容时钟发生电路...

        发表于 2020-04-10 15:28 ? 117次阅读
        STM32单片机的独立看门狗和窗口看门狗的特点及...

        如何在STM32单片机中加入RDP功能

        沿用之前CM3核的STM32F10X系列的加入RDP功能,之后在Segger的Unsecured C...

        发表于 2020-04-10 15:22 ? 87次阅读
        如何在STM32单片机中加入RDP功能

        如何利用STM32单片机串口发送字符串

        最近由于要调试一个SMS发送短信的模块,该模块需要发送一系列AT指令,且需要字符串发送,但是STM3...

        发表于 2020-04-10 16:01 ? 92次阅读
        如何利用STM32单片机串口发送字符串

        STM32单片机中的独立看门狗与窗口看门狗有哪些...

        1.关于看门狗的解释不再说明,窗口看门狗简而言之即只能看某个窗口期即某段时间内才能够喂狗。32的独立...

        发表于 2020-04-10 15:55 ? 76次阅读
        STM32单片机中的独立看门狗与窗口看门狗有哪些...

        如何采用STM32中的控制定时器Tim1实现计数...

        STM32中的高级控制定时器(Tim1)是由一个16位的自动装载计数器组成,它由一个可编程预分频器驱...

        发表于 2020-04-10 15:25 ? 121次阅读
        如何采用STM32中的控制定时器Tim1实现计数...

        如何使用STM32单片机实现DMA的同时发送和接...

        在SPI通信中,可以同时开启发送和接收DMA请求,自动数据的发送和接收,完成数据的交换 基本步...

        发表于 2020-04-10 15:26 ? 111次阅读
        如何使用STM32单片机实现DMA的同时发送和接...

        STM32单片机优先级的定义

        先占优先级也就是抢占优先级,概念等同于51单片机中的中断。假设有两中断先后触发,已经在执行的中断先占...

        发表于 2020-04-10 15:09 ? 87次阅读
        STM32单片机优先级的定义

        如何计算单片机的波特率

        在这个公式上,共有三个变量,其中两个我们是知道的,Fck和Tx/Rx波特率这两个是已知的,USART...

        发表于 2020-04-10 16:15 ? 122次阅读
        如何计算单片机的波特率

        STM32单片机的USART接收数据问题解决方案

        先使用USART中断函数接收数据,判断是否接收到每帧数据的起始标记字符。如果接收到就关闭USART中...

        发表于 2020-04-10 15:36 ? 87次阅读
        STM32单片机的USART接收数据问题解决方案

        如何采用STM32单片机产生PWM

        STM32产生PWM是非常的方便的,要需要简单的设置定时器,即刻产生! (1)使能定时器时钟:...

        发表于 2020-04-10 15:36 ? 134次阅读
        如何采用STM32单片机产生PWM

        如何构建STM32单片机keil的开发环境

        在工程文件下,新建Startup、Headers、User、Libraries、CMSIS、List...

        发表于 2020-04-10 14:52 ? 105次阅读
        如何构建STM32单片机keil的开发环境

        STM32单片机USB速度慢的原因解析

        全速的USB设备,最大速度12Mb/s,但是如果跑的是HID之类慢速设备的协议,那么速度就没有那么快...

        发表于 2020-04-10 15:06 ? 164次阅读
        STM32单片机USB速度慢的原因解析

        STM32单片机的EXIT中断解析

        工程概要说明:定义一个按键(可自己定义),每按键一次,响应中断一次,在中断函数中LED提示灯变化一次...

        发表于 2020-04-10 15:04 ? 118次阅读
        STM32单片机的EXIT中断解析

        STM32单片机GPIO寄存器的功能解析

        对于GPIO端口,每个端口有16个引脚,每个引脚的模式由寄存器的四个位控制,每四位又分为两位控制引脚...

        发表于 2020-04-10 14:54 ? 176次阅读
        STM32单片机GPIO寄存器的功能解析

        STM32单片机对ADS1246芯片的驱动

        ADS1246的SPI时序,这个是需要提一下的,一般来说,SPI协议在上升沿锁存数据,下降沿更新数据...

        发表于 2020-04-10 14:39 ? 111次阅读
        STM32单片机对ADS1246芯片的驱动

        STM32单片机的can总线的配置

        CAN_InitStructure.CAN_TTCM=DISABLE;//禁止时间触发通信模式 ...

        发表于 2020-04-10 14:31 ? 202次阅读
        STM32单片机的can总线的配置

        STM32单片机的SYSTick定时器的设置

        SysTick 是一个24 位的倒计数定时器,当计到0 时,将从RELOAD 寄存器中自动重装载定时...

        发表于 2020-04-10 14:27 ? 97次阅读
        STM32单片机的SYSTick定时器的设置

        STM32单片机FSMC的使用解析

        LCD有如下控制线: CS:Chip Select片选,低电平有效 RS:Registe...

        发表于 2020-04-10 14:17 ? 96次阅读
        STM32单片机FSMC的使用解析

        STM32单片机如何实现规则多通道转换

        DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR...

        发表于 2020-04-10 16:22 ? 135次阅读
        STM32单片机如何实现规则多通道转换

        STM32单片机的断言机制函数assert_pa...

        这个宏定义的作用就是检查参数PERIPH,判断参数PERIPH是否为GPIOX(A.。.G)基址中的...

        发表于 2020-04-10 16:10 ? 119次阅读
        STM32单片机的断言机制函数assert_pa...

        如何采用STM32单片机实现SPI的驱动

        void SPI_cfg(void){ SPI_InitTypeDef SPI_InitStr...

        发表于 2020-04-10 15:56 ? 128次阅读
        如何采用STM32单片机实现SPI的驱动

        STM32单片机对红外接收系统的设计

        红外接收头一般是接收、放大、解调一体头,一般红外信号经接收头解调后,数据“0”和“1”的区别通常体现...

        发表于 2020-04-10 15:32 ? 116次阅读
        STM32单片机对红外接收系统的设计

        STM32单片机的IAP向量问题解决方案

        // 1:复制用户代码中的中断向量表到SRAM首地址 // 2: 开启SRAM的重映射功能,将...

        发表于 2020-04-10 15:24 ? 110次阅读
        STM32单片机的IAP向量问题解决方案

        STM32单片机的ADS1115通过模拟I2C驱...

        收获:对于I2C通信协议的理解更加深刻,对ADS1115也能进行单通道的使用。I2C的开始、发送/读...

        发表于 2020-04-10 16:49 ? 127次阅读
        STM32单片机的ADS1115通过模拟I2C驱...

        STM32单片机SPI的使用原理解析

        GPIO_InitTypeDef GPIO_InitStructure; //配置SPI2管脚...

        发表于 2020-04-10 16:35 ? 104次阅读
        STM32单片机SPI的使用原理解析

        STM32单片机重映射USART设计

        外部中断(EXTI)中与AFIO有关的寄存器是AFIO-EXTICR1、2、3,它们是用来选择EXT...

        发表于 2020-04-10 16:27 ? 79次阅读
        STM32单片机重映射USART设计

        STM32单片机的ADC多通道采样

        这里使用的是3362电位器(10K),即用STM32来测量PB0和GND两端的电压,这样的电路设计比...

        发表于 2020-04-10 16:12 ? 132次阅读
        STM32单片机的ADC多通道采样

        STM32单片机的CPU运行性能的算法测试

        此算法是基于操作系统的,理论上不限于任何操作系统,只要有任务调度就可以。本文将以FreeRTOST为...

        发表于 2020-04-10 16:01 ? 316次阅读
        STM32单片机的CPU运行性能的算法测试

        如何将STM32单片机的JTAG口作为GPIO使...

        针对F4系列,STM32F4库函数中,已经取消了GPIO_*PinRemapConfig()函数,对...

        发表于 2020-04-10 16:43 ? 115次阅读
        如何将STM32单片机的JTAG口作为GPIO使...

        STM32单片机的usb上电和断电函数的定义

        usb_pwr.c 这个文件看文件名就知道跟功耗有关了,有很多的状态:上电、掉电、挂起、恢复。

        发表于 2020-04-10 16:35 ? 106次阅读
        STM32单片机的usb上电和断电函数的定义

        STM32单片机对CAN过滤器的设置方法

        在使用STM32的CAN控制器进行数据收发,当用到位屏蔽模式的时候,就要设置过滤器了,这个关系到是否...

        发表于 2020-04-10 16:25 ? 123次阅读
        STM32单片机对CAN过滤器的设置方法

        如何通过STM32驱动nRF24L01发送数据

        最近在一个项目中用到了nRF24L01这个无线2.4G收发芯片,项目中有主机和分机,默认都是使用数据...

        发表于 2020-04-10 15:53 ? 104次阅读
        如何通过STM32驱动nRF24L01发送数据

        STM32单片机ADC的模拟看门狗的测试

        ADC的模拟看门狗用于检查电压是否越界。他又上下两个边界,可分别在寄存器ADC_HTR和ADC_LT...

        发表于 2020-04-10 16:49 ? 149次阅读
        STM32单片机ADC的模拟看门狗的测试

        STM32单片机对正交编码器的驱动

        STM32正交编码器驱动,引入(突变)带进位的位置环和速度环

        发表于 2020-04-10 16:12 ? 70次阅读
        STM32单片机对正交编码器的驱动

        如何利用STM32单片机发送字符串

        一、STM32有自己的字符发送函数。 void PC_SendChar(uint8_t Dat...

        发表于 2020-04-10 15:26 ? 123次阅读
        如何利用STM32单片机发送字符串

        基于STM32单片机的USB时钟配置设计

        RCC_DeInit();//将外设RCC寄存器重设为缺省值 /*EnableHSE*/ ...

        发表于 2020-04-10 15:20 ? 108次阅读
        基于STM32单片机的USB时钟配置设计

        STM32单片机的低功耗模式待机唤醒设计

        将程序下载到开发板上后,LED灯会不断地亮灭,当按下KEY2键超过3s时,LED灯灭,标志着单片机进...

        发表于 2020-04-10 14:40 ? 117次阅读
        STM32单片机的低功耗模式待机唤醒设计

        STM32的ADC单次转换设计

        //先配置IO口: ADC_InitTypeDef adcInitStruct; ///...

        发表于 2020-04-10 15:40 ? 113次阅读
        STM32的ADC单次转换设计