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

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

好题——hdu2522(小数问题:求1/n的第一个循环节)

好喜欢这题,第一次做小数问题,一开始真心没思路,然后参考了网上的一些资料。 知识点***********************************无限不循环小数即无理数,不能写作两整数之比*****************************(一开始没想到,小学没学好) 此题1/n肯定是一个有限循环小数,了解这些后就能做此题了。 按照除法的机制,用一个函数表示出来就可以了,代码如下

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

购买磨轮平衡机时应该注意什么问题和技巧

在购买磨轮平衡机时,您应该注意以下几个关键点: 平衡精度 平衡精度是衡量平衡机性能的核心指标,直接影响到不平衡量的检测与校准的准确性,从而决定磨轮的振动和噪声水平。高精度的平衡机能显著减少振动和噪声,提高磨削加工的精度。 转速范围 宽广的转速范围意味着平衡机能够处理更多种类的磨轮,适应不同的工作条件和规格要求。 振动监测能力 振动监测能力是评估平衡机性能的重要因素。通过传感器实时监

缓存雪崩问题

缓存雪崩是缓存中大量key失效后当高并发到来时导致大量请求到数据库,瞬间耗尽数据库资源,导致数据库无法使用。 解决方案: 1、使用锁进行控制 2、对同一类型信息的key设置不同的过期时间 3、缓存预热 1. 什么是缓存雪崩 缓存雪崩是指在短时间内,大量缓存数据同时失效,导致所有请求直接涌向数据库,瞬间增加数据库的负载压力,可能导致数据库性能下降甚至崩溃。这种情况往往发生在缓存中大量 k