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

相关文章

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

关于跨域无效的问题及解决(java后端方案)

《关于跨域无效的问题及解决(java后端方案)》:本文主要介绍关于跨域无效的问题及解决(java后端方案),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录通用后端跨域方法1、@CrossOrigin 注解2、springboot2.0 实现WebMvcConfig

maven私服配置全过程

《maven私服配置全过程》:本文主要介绍maven私服配置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录使用Nexus作为 公司maven私服maven 私服setttings配置maven项目 pom配置测试效果总结使用Nexus作为 公司maven私

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Java死锁问题解决方案及示例详解

《Java死锁问题解决方案及示例详解》死锁是指两个或多个线程因争夺资源而相互等待,导致所有线程都无法继续执行的一种状态,本文给大家详细介绍了Java死锁问题解决方案详解及实践样例,需要的朋友可以参考下... 目录1、简述死锁的四个必要条件:2、死锁示例代码3、如何检测死锁?3.1 使用 jstack3.2

解决JSONField、JsonProperty不生效的问题

《解决JSONField、JsonProperty不生效的问题》:本文主要介绍解决JSONField、JsonProperty不生效的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录jsONField、JsonProperty不生效javascript问题排查总结JSONField