STM32F103 更换串口一二使用不了

 以STM32F103c6t6为例

问题描述:更换串口时直接复制粘贴代码,没有出错,但就是打不开串口。


串口一配置:

	//USART1_TX PA9
	//USART1_RX PA10
    // 打开串口GPIO的时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	
	// 打开串口外设的时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

串口二配置:

    //USART2_TX PA2
	//USART2_RX PA3
    // 打开串口GPIO的时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	
	// 打开串口外设的时钟
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);


 

原因:在串口一二搭载的外设时钟不同。

18ece9b988604514a2d7eac931d53a5e.jpeg

 其中APB2时钟为高速时钟,多用于大量数据传输。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
我发现mpu6050例程中,必须要有usart.h否则函数编译虽然不报错,但是程序执行不了。为什么我这么说嗯,我对我做的尝试做如下的说明。我是针对正点原子的MPU6050战舰版例程进行的测试。 1、remove左边SYSTEM文件夹下的usart文件,见图1,当然也移除了usmart文件夹(此实验中没有实际用处) 2、屏蔽掉LCD中用到串口1的地方(主要就是打印LCD型号的地方),见图2.1和2.2 3、屏蔽掉所有用到usart.h的子文件,如图3中上面的四个头文件,他们都包含了usart.h,都注释掉,这里特别说明需要额外注释掉主程序test.c中的一些向上位机传递数据的一些函数。 4、以上三步完成后,编译程序,程序无错误和警告。下载到战舰开发板中,发现液晶屏不亮,无法显示陀螺仪数据。 5、为了验证问题所在,采用流水灯指示程序的运行状态,不断向上调节LED的位置,直到LED调整到LED初始化下面的时候,编译下载程序开发板上的LED都不亮。至此可以说明有些LED初始化上面某地方有问题,但LED初始化上面仅仅有#include和一些变量的初始化。变量初始化不可能引起问题。 6、进行ST-LINK的硬件调试,发现问题可能由6050导致。 7、于是我用其他的不含6050的程序(例如跑马灯例程),移除usart文件和注释所有含有usart.h的地方,下载运行程序,程序正常运行跑马灯正常运行。 8、经过以上7步的测试可以认为,问题在于mpu6050和usart.h存在潜在的联系,虽然不用调用usart.h。但是是什么联系呢 9、于是我重新加入了第一步中移除的SYSTEM文件夹下的usart,但是其他的地方不变,就是其他所有用到usart.h头文件的地方依旧注释掉,编译没有错误,下载,流水灯亮,液晶屏显示mpu6050数据。所以验证了第8步的猜想,存在着潜在的不为人知的联系。 10、为了知道是什么联系,我不断的删除usart.c和usart.h中的的内容,最终发现,只有当usart.c中保留如下图5,所示的20几行看不懂的程序的时候,mpu6050一切可以运行正常。 经过这里我所有的尝试基本上完成了,接下来抛出我的几个问题 1、第十步中的那20行程序到底是干什么用的呢? 2、为什么那20几行程序仅仅影响了当程序中含有mpu6050时的程序呢? 3、既然mpu6050的三个相关的文件中包含了usart.h的头文件,那为啥注释掉后没有报错呢? 4、mpu6050到底和usart.h中的那20行程序存在什么关系呢? 再想起什么问题,会在下面补充,我把尝试的代码也附在下面,方便大家尝试验证。 最后希望大家能一起讨论一起进步,第一次在论坛写这么多文字,也希望大家多多支持吧。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脑子懂了

为世界做一点点贡献(^∇^*)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值