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
    +关注

    关注

    2239

    文章

    10663

    浏览量

    348452
  • 串口接收
    +关注

    关注

    0

    文章

    8

    浏览量

    9154
收藏 人收藏

    评论

    相关推荐

    STM8S105C6T6 UART2串口接收数据,不能发送数据是为什么?

    STM8S105C6T6 UART2串口,能接收数据,不能发送数据,哪位大神能帮忙看看。现在单片机自发自收没有问题,串口自发自收也没有问题,
    发表于 04-10 08:05

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

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

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

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

    使用adcu7061串口通讯能发送但是不能接收是为什么?

    我现在在使用adcu7061串口通讯。能发送,但是不能接收,我需要中断接收。有没有这个方便的资料给我 if((COMSTA00X01)==0X01) {ucRxChar = COMRX
    发表于 01-12 07:33

    stm32虚拟串口接收数据处理

    STM32中使用虚拟串口时,我们需要处理接收数据接收到的数据可能是来自其他设备的传感器
    的头像 发表于 12-20 11:22 745次阅读

    Proteus 8.9串口仿真只能发送,不能接收

    Proteus 8.9串口直接和单片机串口连接,仿真只能发送,不能接收。用虚拟串口和单片机,测试一切正常,Proteus 8.9串口和虚拟
    发表于 12-12 11:32

    GD32串口dma接收空闲中断配置流程是怎样的?

    GD32串口dma接收空闲中断配置流程是怎样的,用过的朋友分享下经验。现在已经实现串口+DMA的发送和接收,都没有问题,并且使用查询idle方式也可以
    发表于 11-03 07:51

    Gd32串口烧录问题没有返回数据

    Gd32f407vet6使用pa9,pa10串口烧录时,没有返回数据,boot0在上电前已经拉高了,里面的程序已经停止运行了,但是还是没有数据返回,想请教一下,谢谢
    发表于 11-01 18:58

    STM32 HAL库串口同时收发,接收卡死?

    HAL库是针对STM32系列单片机的一套常用的高级抽象层库。在HAL库中,串口通信是通过针对USART外设的封装实现的。HAL库中提供了一些函数,可以方便地配置USART外设的各种参数,如波特率、数据位、停止位、奇偶校验等,还
    的头像 发表于 10-26 17:42 2327次阅读

    STM32串口发送数据接收数据方式总结

    STM32串口发送数据接收数据方式总结
    的头像 发表于 09-19 09:14 5638次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b>发送<b class='flag-5'>数据</b>和<b class='flag-5'>接收</b><b class='flag-5'>数据</b>方式总结

    求助,关于M453串口接收数据的问题

    想用串口一次性接收30个字节的数据,试了下FIFO,但最大只能接收16个字节,然后又试了下接收超过16字节的
    发表于 08-28 07:07

    串口如何接收数据 STM32串口接收数据

    如果采用查询接收方式接受串口数据,就会造成接收不及时,还没接收数据,下一个
    的头像 发表于 07-21 17:07 4855次阅读
    <b class='flag-5'>串口</b>如何<b class='flag-5'>接收</b><b class='flag-5'>数据</b> <b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>接收</b><b class='flag-5'>数据</b>

    N76E003串口接收字符串乱码是什么原因?

    N76E003串口接收字符串部分是乱码,偶尔正常。 发送是正常的,仅接收不正常,波特率是115200
    发表于 06-14 12:35

    如何实现串口数据接收呢?

    UART接收数据部分是接收另一个串口设备发送的数据,缓存到接收FIFO中。FIFO快要写满时,产
    的头像 发表于 06-05 15:24 2692次阅读
    如何实现<b class='flag-5'>串口</b><b class='flag-5'>数据</b>的<b class='flag-5'>接收</b>呢?

    STM32CubeMX之串口接收不定长数据

    基本串口通信通常只能接收到定长数据,无法稳定接收不定长数据,本章介绍利用STM32单片机的IDL
    的头像 发表于 05-11 09:59 2201次阅读
    <b class='flag-5'>STM32</b>CubeMX之<b class='flag-5'>串口</b><b class='flag-5'>接收</b>不定长<b class='flag-5'>数据</b>