STM32F103 USART配置问题

2024-05-13 09:48
文章标签 配置 问题 stm32f103 usart

本文主要是介绍STM32F103 USART配置问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近开始搞嵌入式了,因为是小白,所以遇到了很多各种各样的问题,其中一个USART的配置问题至今未解决,先在此记录一下;


问题描述:初始化USART1,将USART1重映射到pb6和pb7端口,然后配置相关参数。

但是第一次配置总是不成功,然而第二次配置成功,也就是说要把程序向板子里烧两次才行,第一次初始化完成后没有效果,我单步跟踪了一下,发现相应的寄存器的值也已经设置,可USART1的tx依然是低电平(用示波器测量);第二次初始化完成,直接成功,tx变为高电平。不知道是哪里的问题;


问题代码:不知道是哪个模块出了问题,先把USART配置的代码发上来吧,等到找到解决方案再做分析,如果有哪位大神碰巧看到了这篇文章,还望不吝赐教。

/*********************************************************************************************
* name			:		USART_Configuration
* func			:		³õʼ»¯´®¿Ú
* para			:		none
* ret				:		none
* comment		:	
*********************************************************************************************/
static void USART_Configuration(void)
{/*********************É趨USART1ÏàÓ¦²ÎÊý******************/USART_InitTypeDef USART1_InitStruct;//ÉèÖö¨Òå½á¹¹ÌåUSART_ClockInitTypeDef USART_ClockInitStruct;//ÉèÖô®¿ÚÓëʱ¼äÓйؽṹÌåGPIO_InitTypeDef GPIO_InitStructB;//¶¨ÒågpioB¶Ë¿ÚÉèÖýṹÌåNVIC_InitTypeDef NVIC_InitStruct;//ÖжÏÅäÖýṹÌå/*¿ªÆôGPIOABCʱÖӺͶ˿ڸ´ÓÃʱÖÓ*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_USART1, ENABLE);/*************ÅäÖÃUSART1µÄÊäÈëºÍÊä³öÖØÓ³Éäµ½ÏàÓ¦Òý½Å*********//*ÆôÓÃUSART1Èí¼þÓ³Éä-----TX->PB6,RX->PB7 */GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);/*ÅäÖÃUSART1_TXµÄÍÆÍìÊä³ö¹¦ÄÜ*/GPIO_InitStructB.GPIO_Pin=GPIO_Pin_6;//Òý½ÅΪGPIOB6GPIO_InitStructB.GPIO_Mode=GPIO_Mode_AF_PP;//ÉèÖÃΪÍÆÍìÊä³öGPIO_InitStructB.GPIO_Speed=GPIO_Speed_50MHz;//ÉèÖÃƵÂÊ£¬×î´ó²¨ÌØÂÊΪ115200GPIO_Init(GPIOB,&GPIO_InitStructB);//³õʼ»¯¶Ë¿Ú/*ÅäÖÃUSART1_RXµÄ¸¡¿ÕÊäÈ빦ÄÜ*/GPIO_InitStructB.GPIO_Pin=GPIO_Pin_7;//Òý½ÅΪGPIOB7GPIO_InitStructB.GPIO_Mode=GPIO_Mode_IN_FLOATING;//ÉèÖÃΪ¸¡¿ÕÊäÈëGPIO_InitStructB.GPIO_Speed=GPIO_Speed_2MHz;//ÉèÖÃƵÂÊGPIO_Init(GPIOB,&GPIO_InitStructB);//³õʼ»¯¶Ë¿Ú/*´®¿ÚÖжÏÅäÖã¬ÓÃÓÚÖն˽ÓÊÕÊý¾Ý*/NVIC_InitStruct.NVIC_IRQChannel=USART1_IRQn;//ÅäÖÃÖжÏÏòÁ¿Í¨µÀNVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStruct.NVIC_IRQChannelSubPriority=0;NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;/*°´ÕÕÅäÖýṹÌå³õʼ»¯ÖжÏÏòÁ¿*/NVIC_Init(&NVIC_InitStruct);USART1_InitStruct.USART_BaudRate=115200;//É趨²¨ÌØÂÊUSART1_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//ÎÞÓ²¼þ±ê¼ÇλUSART1_InitStruct.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;//ÊÕ·¢¶¼Ê¹ÄÜUSART1_InitStruct.USART_Parity=USART_Parity_No;//ÉèÖÃΪÎÞУÑéλ£»USART1_InitStruct.USART_StopBits=USART_StopBits_1;//ֹͣλΪ1USART1_InitStruct.USART_WordLength=USART_WordLength_8b;//×Ö³¤Îª°ËλUSART_ClockInitStruct.USART_Clock = USART_Clock_Disable;//USART_ClockInitStruct.USART_CPOL = USART_CPOL_Low;//USART_ClockInitStruct.USART_CPHA = USART_CPHA_2Edge;//USART_ClockInitStruct.USART_LastBit = USART_LastBit_Disable;//USART_Init(USART1,&USART1_InitStruct);//¸ù¾ÝÉèÖóõʼ»¯´®¿ÚUSART_ClockInit(USART1,&USART_ClockInitStruct);/*¿ªÆôUSART1¶Ë¿Ú*///USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//¿ªÆôÖжϽÓÊÕUSART_Cmd(USART1,ENABLE);}


这篇关于STM32F103 USART配置问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/985359

相关文章

Seata之分布式事务问题及解决方案

《Seata之分布式事务问题及解决方案》:本文主要介绍Seata之分布式事务问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Seata–分布式事务解决方案简介同类产品对比环境搭建1.微服务2.SQL3.seata-server4.微服务配置事务模式1

mysql关联查询速度慢的问题及解决

《mysql关联查询速度慢的问题及解决》:本文主要介绍mysql关联查询速度慢的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql关联查询速度慢1. 记录原因1.1 在一次线上的服务中1.2 最终发现2. 解决方案3. 具体操作总结mysql

一文教你解决Python不支持中文路径的问题

《一文教你解决Python不支持中文路径的问题》Python是一种广泛使用的高级编程语言,然而在处理包含中文字符的文件路径时,Python有时会表现出一些不友好的行为,下面小编就来为大家介绍一下具体的... 目录问题背景解决方案1. 设置正确的文件编码2. 使用pathlib模块3. 转换路径为Unicod

Spring MVC跨域问题及解决

《SpringMVC跨域问题及解决》:本文主要介绍SpringMVC跨域问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录跨域问题不同的域同源策略解决方法1.CORS2.jsONP3.局部解决方案4.全局解决方法总结跨域问题不同的域协议、域名、端口

MyBatis的配置对象Configuration作用及说明

《MyBatis的配置对象Configuration作用及说明》MyBatis的Configuration对象是MyBatis的核心配置对象,它包含了MyBatis运行时所需的几乎所有配置信息,这个对... 目录MyBATis配置对象Configuration作用Configuration 对象的主要作用C

SpringBoot自定义注解如何解决公共字段填充问题

《SpringBoot自定义注解如何解决公共字段填充问题》本文介绍了在系统开发中,如何使用AOP切面编程实现公共字段自动填充的功能,从而简化代码,通过自定义注解和切面类,可以统一处理创建时间和修改时间... 目录1.1 问题分析1.2 实现思路1.3 代码开发1.3.1 步骤一1.3.2 步骤二1.3.3

IDEA与JDK、Maven安装配置完整步骤解析

《IDEA与JDK、Maven安装配置完整步骤解析》:本文主要介绍如何安装和配置IDE(IntelliJIDEA),包括IDE的安装步骤、JDK的下载与配置、Maven的安装与配置,以及如何在I... 目录1. IDE安装步骤2.配置操作步骤3. JDK配置下载JDK配置JDK环境变量4. Maven配置下

Springboot的自动配置是什么及注意事项

《Springboot的自动配置是什么及注意事项》SpringBoot的自动配置(Auto-configuration)是指框架根据项目的依赖和应用程序的环境自动配置Spring应用上下文中的Bean... 目录核心概念:自动配置的关键特点:自动配置工作原理:示例:需要注意的点1.默认配置可能不适合所有场景

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题

基于.NET编写工具类解决JSON乱码问题

《基于.NET编写工具类解决JSON乱码问题》在开发过程中,我们经常会遇到JSON数据处理的问题,尤其是在数据传输和解析过程中,很容易出现编码错误导致的乱码问题,下面我们就来编写一个.NET工具类来解... 目录问题背景核心原理工具类实现使用示例总结在开发过程中,我们经常会遇到jsON数据处理的问题,尤其是