历史上的今天
今天是:2024年10月24日(星期四)
2019年10月24日 | 错误解决:STM32F103串口1与串口3相同代码却结果不同
2019-10-24 来源:eefocus
在前几天调试openmv时发现同样的代码串口1和串口3的结果却是不一样的,当时着实是把我坑了很久,怎么都找不到原因,用示波器看波形也是没有问题的,在Openedv网站上有位网友指出是我初始化代码的问题,在翻阅参考手册后终于发现了问题。
下列代码为我原本的初始化代码:
#include "sys.h"
#include "usart.h"
#include "led.h"
#include "usart3.h"
int theta_err,rho_err;
int main(void)
{
Stm32_Clock_Init(9); //=====系统时钟设置
delay_init(72); //=====延时初始化
uart_init(72,115200); //=====初始化串口1
uart3_init(72,115200); //=====初始化串口3
LED_Init();
while(1)
{
LED=!LED;
delay_ms(100);
}
}
问题出在哪里呢,就是我对串口三的初始化。
参考手册中的总线结构如下:
可以看出,串口1挂载在APB2总线上,而串口2、3(4、5)都挂载在APB1总线上,而时钟树告诉我们:
APB2总线是全速的(最高72MHZ),而APB1总线最高只支持36MHZ,这就是我的错误所在,将串口3设置为36MHZ后果然正常了。
史海拾趣
|
最近在用ARM+GPRS做收发短信系统,但总是没反应,短信发不了!困惑很久,请路过的兄台多多指点,帮我看看程序有何错误!谢谢!谢谢! # include # include # include # include # include # include # include # include # includ ...… 查看全部问答> |
|
说出用labview做可编程控制器实验(8259)的思路和具体做法,最好把显示器调用和代码如何往里加说清楚,可以的话加我qq:924605285,谢谢各位了!… 查看全部问答> |
|
用DeviceIoControl中用FSCTL_GET_RETRIEVAL_POINTERS获取指定文件的分布情况,获得的数据加入ExtentCount有n个,那么LCN中很多时候highpart是为0,lowpart有数据,问一下各位大虾,我从这里中我如何知道这些碎片的具体位置? 补充一下:虽然积分少 ...… 查看全部问答> |
|
//发送文本 void CTCPIPDlg::OnSendtest() { DWORD actlen, cnt = 0; int nErrorCode; if (m_Socket == NULL) return; ...… 查看全部问答> |
|
pic串行输出信号有一段是跳动的是怎么回事,是连到lcd驱动芯片的,lcd显示的是一串稳定的数字,示波器看到的信号由一段是跳动的,什么原因?请高人解释,谢谢… 查看全部问答> |






