0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

stm32串口接收数据程序

汽车玩家 来源:dgzj 作者:dgzj 2021-07-22 17:11 次阅读

stm32串口接收数据程序


void init_usart(void)

//RCC初始化

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

RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);

//nvic

NVIC_ InitTypeDef NVIC_InitStructure;#ifdef VECT_TAB_RAM

NVIC_SetVectorTable(NVIC_VectTab_RAM,Ox0);#else

NVIC_SetVectorTable(NVIC_VectTab_FLASH,Ox0);#endif

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;NVIC_InitStructure.NVIC_IRQChannelSubPriority = o;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_lnitStructure);

//GPIO初始化

GPIO_IlnitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_IlnitStructure.GPIO_Speed = GPIO_Speed_5OMHz;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;

GPIO_Init(GPIOA,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_5OMHz;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;

GPIO_Init(GPIOA,&GPIO_InitStructure);

//USART初始

//USART_DeInit(USART2);

USART_InitTypeDef USART_InitStructure;

//串口设置恢复默认参数

USART_ClockInitTypeDef USART_ClocklnitStructure;

USART_InitStructure.USART_BaudRate = 9600;

//波特率9600

USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长8位USART_InitStructure.USART_StopBits = USART_StopBits_1;

//1位停止字节

USART_InitStructure.USART_Parity = USART_Parity_No;

川/无奇偶校验

USART_IlnitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无流控制

USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//打开Rx接收和Tx发送功能

USART_ClockInitStructure.USART_Clock =USART_Clock_Disable;USART_ClockInitStructure.USART_CPOL =USART_CPOL_High;USART_ClockInitStructure.USART_CPHA =USART_CPHA_2Edge;USART_ClocklnitStructure.USART_LastBit =USART_LastBit_Disable;USART_Clocklnit(USART2,&USART_ClockInitStructure);

USART_Init(USART2,&USART_InitStructure);

//初始化

USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);//开启接收中断,这个必须在打开串口之前设置USART_Cmd(USART2,ENABLE);

/启动串口

void USART2_IRQHandler(void)

//接收中断

if(USART_GetlTStatus(USART2,USART_IT_RXNE)==SET)(

USART_ClearlTPendingBit(USART2,USART_IT_RXNE);usart_rx=USART_ReceiveData(USART2);

usart_rx_flag=1;

}

//溢出-如果发生溢出需要先读SR,再读DR寄存器则可清除不断入中断的问题[牛人说要这样]if(USART_GetFlagStatus(USART2,USART_FLAG_ORE)==SET)

USART_ClearFlag(USART2,USART_FLAG_ORE);//读SR其实就是清除标志USART_ReceiveData(USART2);//读DR

}

}


文章整合自:dgzj

编辑:ymf

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2270

    文章

    10895

    浏览量

    355728
  • 串口接收
    +关注

    关注

    0

    文章

    8

    浏览量

    9246
收藏 人收藏

    评论

    相关推荐

    RS232串口连接方式及注意事项

    交换。 RS-232串口简介 RS-232标准最初由电子工业联盟(EIA)在1960年制定,用于定义串行通信的电气特性、信号定时和数据格式。RS-232串口使用25针的D型连接器(DB-25),但后来更常用的是9针的D型连接器(
    的头像 发表于 12-10 16:23 586次阅读

    LS10串口数据库模块外扩SD卡功能

    LS10串口数据库模块外扩SD卡功能
    的头像 发表于 11-23 09:42 185次阅读
    LS10<b class='flag-5'>串口</b><b class='flag-5'>数据</b>库模块外扩SD卡功能

    快速实现C2000串口程序升级

    电子发烧友网站提供《快速实现C2000串口程序升级.pdf》资料免费下载
    发表于 08-29 10:50 0次下载
    快速实现C2000<b class='flag-5'>串口</b><b class='flag-5'>程序</b>升级

    用esp32的串口Stm32F407串口通讯,通过TJA转CAN,结果esp32串口读到的一直是自己发的数据,为什么?

    我用esp32的串口Stm32F407串口通讯,通过TJA转CAN。结果esp32串口读到的一直是自己发的数据,各位大神给我看看哪里有问题
    发表于 06-19 07:00

    485串口可以用can协议吗

    一、引言 随着工业自动化和智能控制技术的发展,通信协议在设备间数据传输和控制中扮演着越来越重要的角色。485串口和CAN协议是两种常见的通信协议,它们在不同的应用场景中发挥着重要作用。本文将对这两种
    的头像 发表于 06-16 09:21 1210次阅读

    stm8串口通信接收数据,如何判断是否接收完毕?

    stm8串口通信接收数据。已有的协议是只有帧头,没有帧尾,最后一个字节是校验和,一帧数据的长度是不确定的,但可以根据第三个字节来判断本次数据
    发表于 05-06 07:24

    STM32 HAL printf所占用串口不能做中断接收如何解决?

    目前在使用STM32L053系列MCU,基于HAL库的程序,硬件串口资源有3个,都已经被使用;其中USART2通过Switch芯片来实现printf打印和读取传感器数据;因为USART
    发表于 04-29 09:01

    Python怎么读取STM32串口数据

    =ser.readlines()print(s) 可是什么都读取不了。如果用买的STM32开发板送的串口助手,能接收数据。板子上烧录的printf输出
    发表于 04-24 07:30

    STM32F030F4串口空闲中断接收不定长数据,发生中断后不知道如何计算接收到的字节数?

    我用STM32F030F4串口空闲中断接收不定长数据,发生中断后不知道怎样计算接收到的字节数。
    发表于 04-03 07:12

    stm32g070怎么可以让usart3串口可以自动接收自己发出的数据

    让usart3串口可以自动接收自己发出的数据(即可全双工工作)? usart4:目前仅可以正常接收数据,发送
    发表于 03-28 06:53

    ZDP1440串口屏应用开发如何使用虚拟串口调试

    ZDP1440串口屏应用开发如何使用虚拟串口调试呢?本文将详细方法分享给大家。
    的头像 发表于 01-25 11:32 1669次阅读
    ZDP1440<b class='flag-5'>串口</b>屏应用开发如何使用虚拟<b class='flag-5'>串口</b>调试

    远程透传网关-单网口快速实现信捷XD5串口PLC程序远程上下载

    【技术分享】远程透传网关-单网口快速实现信捷XD5串口PLC程序远程上下载
    的头像 发表于 01-23 17:31 890次阅读
    远程透传网关-单网口快速实现信捷XD5<b class='flag-5'>串口</b>PLC<b class='flag-5'>程序</b>远程上下载

    远程透传网关-单网口快速实现信捷XD3串口PLC程序远程上下载

    【技术分享】远程透传网关-单网口快速实现信捷XD3串口PLC程序远程上下载
    的头像 发表于 01-23 10:00 1552次阅读
    远程透传网关-单网口快速实现信捷XD3<b class='flag-5'>串口</b>PLC<b class='flag-5'>程序</b>远程上下载

    stm32串口接收中断触发原理

    配置串口接收中断使能:在初始化串口时,需要设置相应的控制寄存器来使能串口接收中断。这通常可以通过设置相应的标志位或使用特定的寄存器位来完成。
    发表于 01-17 15:42 7947次阅读
    <b class='flag-5'>stm32</b><b class='flag-5'>串口</b><b class='flag-5'>接收</b>中断触发原理

    什么是RS-232串口?消费级电脑通常没有232串口的主要原因

    。 首先,让我们来了解一下RS-232串口的工作原理。RS-232通过将数据序列转化为电流或电压信号来传输数据。发送方将数据位顺序发送到接收
    的头像 发表于 01-09 13:52 1152次阅读