STM32串口USART配置、发送与接收

发布者:czm721002最新更新时间:2022-09-27 来源: csdn关键字:STM32  串口  USART  配置  发送与接收 手机看文章 扫描二维码
随时随地手机看文章

一、配置时钟:GPIO时钟、串口时钟、复用引脚时钟


二、配置GPIO结构体


三、配置串口结构体


//串口初始化示例


void usart_init(void)

{

    

    //创建结构体

      GPIO_InitTypeDef  gpioinitStructure;

      USART_InitTypeDef  usartinitStructure;

       NVIC_InitTypeDef   NVICinitStructure;

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);


    //设置时钟

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE );

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE );

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE );


    //A9 TX

      gpioinitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

      gpioinitStructure.GPIO_Pin = GPIO_Pin_9 ;

      gpioinitStructure.GPIO_Speed = GPIO_Speed_10MHz;


GPIO_Init(GPIOA, &gpioinitStructure);

    //10 Rx

    gpioinitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

    gpioinitStructure.GPIO_Pin = GPIO_Pin_10;

    GPIO_Init(GPIOA, &gpioinitStructure);


//串口结构体

     usartinitStructure.USART_BaudRate = 115200;

     usartinitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//硬件流

     usartinitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx  ;//配置输入和输出模式

     usartinitStructure.USART_Parity = USART_Parity_No;//校验位

     usartinitStructure.USART_StopBits = USART_StopBits_1;//停止位

     usartinitStructure.USART_WordLength = USART_WordLength_8b;//有效数据长度

     USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//配合中断配置使能

     USART_Init(USART1, &usartinitStructure);//初始化

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


//内核外设中断


    NVICinitStructure.NVIC_IRQChannel = EXTI1_IRQn;//中断通道

     NVICinitStructure.NVIC_IRQChannelPreemptionPriority = 1;//抢占优先级

     NVICinitStructure.NVIC_IRQChannelSubPriority = 1;//子优先级

     NVICinitStructure.NVIC_IRQChannelCmd = ENABLE;//使能

     NVIC_Init(&NVICinitStructure);


}


四、串口发送与中断接收


//发送字符

void USARTSendByte(USART_TypeDef* USARTx, uint16_t Data)

{

        USART_SendData(USARTx, Data);

   while( USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET);



}

//发送字符串

void USARTSendstr(USART_TypeDef* USARTx, char *str)

{

    uint16_t  i = 0;

          do

                    {

                    USARTSendByte(USARTx, *(str + i)) ;

                        i++;

                    }while( *(str + i) != '');

                    

 while(     USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET);

                    

}


//printf、scanf、putchar、getchar重映射


int fputc(int ch,FILE *f)

{

      USART_SendData(USART1,(uint8_t) ch);

while(     USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);

    

    return(ch);

}


int fgetc(FILE *f)

{

while(     USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);

        return(int)USART_ReceiveData(USART1);

}

五、相关函数


中断配置函数


void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState);


串口发送数据函数

void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);


串口接收数据函数

uint16_t USART_ReceiveData(USART_TypeDef* USARTx);



串口获取标志位函数


FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);

void USART_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG);

中断状态获取函数

ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT);

void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);

关键字:STM32  串口  USART  配置  发送与接收 引用地址:STM32串口USART配置、发送与接收

上一篇:STM32定时器中断配置
下一篇:STM32GPIO的八种输入输出模式

推荐阅读最新更新时间:2024-11-12 03:08

STM32学习笔记10——stm32中结构体字节对齐问题
stm32 做串口或网络传输数据时,经常需要用结构体定义帧格式。如果按照 keil 默认的对齐方式(4字节对齐),经常会出现结构体中补零的问题,造成帧格式错误。所以,在定义结构体类型时,最好把结构体对齐方式改为1字节对齐,防止出错。 #pragma pack(4) //按4字节对齐,但实际上由于结构体中单个成员的最大占用字节数为2字节,因此实际还是按2字节对齐 typedef struct { char buf ;//buf 按1字节对齐,buf 按1字节对齐,由于buf 的下一成员word a是按两字节对齐,因此buf 按1字节对齐后,后面只需补一空字节 word a; //#pragma pack(4),取小
[单片机]
STM32 ADC模拟看门狗过程实现
我们在做ADC应用时,有些场合需要精确测量出待测信号的数据,有时可能并不关心ADC结果多准确,只要满足某个范围即可,这时我们就可以考虑使用STM32ADC看门狗功能了。 STM32 ADC基本上都支持模拟看门狗功能,即ADC模块对被检测的模拟通道的转换结果基于硬件对其合法性、安全性进行监测。我们可以设置被监测通道的转换结果合法性检查的上下阈值,若结果处于阈值之外则视为异常,并可以触发中断。 尤其有些场合,我们可能使用到数个ADC通道,8个、10个甚至更多,同时程序还需要基于各通道的转换结果进行合法性或安全性监测,此时使用ADC模拟看门狗功能就很方便。我们可以先让模拟看门狗做第一步把关,只有出现异常数据时才去进一步检查确认。
[单片机]
<font color='red'>STM32</font> ADC模拟看门狗过程实现
STM32F107VCT6的通用定时器的输入捕获功能配置
将TIM4配置成输入捕获功能用于计算矩形波的周期。 #define NVIC_Priority_Timer4 1 void TIM4_Init_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; TIM_ICInitTypeDef TIM_ICInitStructure; //输入捕获结构体 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; //时基结构体 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABL
[单片机]
第四节:定时器中断及定时器产生PWM(用CubeMX学习STM32)
前言: STM32定时器概述 我演示用的STM32F407ZGt6的核心板有多达14个定时器;  其中包含两个高级定时器(TIM1和TIM8); 十个通用定时器(TIM2~TIM5, TIM9~TIM14); 两个基础定时器(TIM6、TIM7)。 Tips: 在十个通用定时器里面包含两个看门狗定时器(two watchdog timers) 下面是datasheet里面官方给出的介绍 Couter resolution— 计数器位数, 位数越高精度越高; Counter type — 计数类型 即向上计数还是向下计数 Prescaler factor — 分频因子, 对时钟的分频, 比如单片机的时钟为84MHz, 预
[单片机]
第四节:定时器中断及定时器产生PWM(用CubeMX学习<font color='red'>STM32</font>)
意法半导体更新TouchGFX软件,增加视频功能丰富STM32用户体验
意法半导体更新TouchGFX软件,增加视频功能,丰富STM32用户体验 2021 年 11月5日,中国——意法半导体发布了最新版的STM32* 微控制器 (MCU)图形界面开发软件TouchGFX Version 4.18,新增了视频播放功能,改进了多名开发者协同开发工具,支持新的 X-NUCLEO 显示板。 通过可以播放 Motion-JPEG (MJPEG) 视频文件,TouchGFX为家庭自动化产品、穿戴设备、医疗设备和工业传感器等小型设备带来了更多产品力,实现丰富的功能,例如,用户操作指南或有趣的启动和暂停屏幕,提升图形用户界面的视觉效果。开发人员可以使用自己的 MJPEG 文件或从软件提供的电影示例中选择
[嵌入式]
意法半导体更新TouchGFX软件,增加视频功能丰富<font color='red'>STM32</font>用户体验
基于STM32和CC2520的TinyOS移植方法
TinyOS系统以其组件结构模型、事件驱动、并发型等优点成为目前最受关注的无线传感器网络操作系统。但TinyOS不支持STM32和CC2 520芯片。因此在分析TinyOS基本原理、NesC编程语言实现机制及其编译过程的基础上,介绍了基于STM32和CC2520的TinyOS移植方法,完成了STM32的I/O组件、Timer组件、USART组件、SPI组件和CC2520芯片驱动的移植。在实现CC2520的基本通信功能基础上,实现简单MAC协议。最后测试了各组件的移植效果。实验测试结果表明,节点可以稳定可靠地通信。 无线传感器网络(Wireless Sensor Network,WSN)是一种应用相关的网络。需要对某些操
[单片机]
基于<font color='red'>STM32</font>和CC2520的TinyOS移植方法
一个简易的51单片机串口接收和发送程序
/********************* 程序功能:接收上位机发过来的一个字符串,然后把该字符串发送给上位机, 字符串必须以!结尾 **********************/ #include reg52.h #define uchar unsigned char #define uint unsigned int sbit LED = P2^7; uchar flag = 0; uchar index = 0; uchar data c ; void Delay_ms(uint n) { uchar i; while(n--) for(i = 0;i 120;i++); } void Send_strin
[单片机]
专家揭秘高级辅助驾驶技术配置,国内核心技术明显不足
自动驾驶 可以说是目前的一个热门词,任何一个想好好发展的车企,只要稍微跟自动驾驶粘上边,哪怕是自动辅助驾驶很初级,都会在上面大做文章,似乎自己的企业达到了一个全新的技术研发水平。而部分国人买车,也喜欢买有所谓技术含量的,而自动辅助驾驶技术就是他们的最爱,加上厂家的一系列宣传攻势,正符合他们的胃口,从而很快促成一桩桩购车的买卖。 不过,过去很多视频,都反映了自动驾驶的“危害”,比如有车企在“炫技”时,启动所谓自动驾驶模式,让前面站一个人,当车辆接近人并达到一定距离时,受感应的车辆就会自动停止,结果有的新车在现场就现丑:把人撞倒了。这样的视频在网上不算少。 因此,当消费者听信厂家的宣传时,不妨先听听专家之言,神秘的高级辅助驾
[汽车电子]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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