不初始化串口,初始化IO口时会有问题的吗?

2019-07-20 12:44发布

先求助一下原子哥,我用的是F4的开发板,最近刚开始学的时候,发现一个很奇怪的事情,程序我放附件里。

注:我LED初始化的函数里,我更改了IO口为PF7和PF8(PF8默认连在蜂鸣器),同时在初始化中置高,还写了一个函数让其置低(该函数在while中循环),另做他用,只是重新保留了叫LED_Init();而已

串口的初始化——"uart_init(115200);",这个语句如果没有的话,只有LED_init和LCD_init初始化,蜂鸣器会响(即对应PF7和PF8都置高,whlie循环中置低不起作用)。我研究了很久发现以下几个情况


1:此时如果将LED_init和LCD_init两个函数初始化换位置,蜂鸣器就不响了,对应了PF7和PF8的IO口输出也正常为低电平。

2:此时如果将LED_init里的IO口在初始化时置低,蜂鸣器也不会响,,对应了PF7和PF8的IO口输出也正常为低电平。

另外还有两个问题:
1:我还在PPT里发现了这么一页,由于串口要打印LCD的ID,表明不初始化串口,LCD屏幕无法点亮,这里我在程序中找到了打印LCD ID的语句,但是判断LCD的ID进行初始化好像和串口无关啊?

2:上述PF7和PF8这两个IO口在串口程序和LCD程序中,都没有共用的情况,怎么就会导致他们缺少串口初始化就输出电平有问题,其他IO口会存在这个问题吗?(对于LCD和串口都没涉及到的IO口)

以上就是我昨天无意中发现的问题,因为纠结了很久,感觉不弄清楚很影响以后的学习,望原子哥能帮忙解答一下这个问题,论坛大佬们也帮忙解惑一下吧
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
冰封嗜魔
1楼-- · 2019-07-20 14:41
 精彩回答 2  元偷偷看……
taizonglai
2楼-- · 2019-07-20 16:24
PPT写的这么明显!LCD_Init()里面用到了printf()函数来通过串口打印LCD的ID,如果在调用LCD_Init()函数之前没有调用函数usart_init()来初始化串口,那么代码肯定会出问题的!!
142zjb
3楼-- · 2019-07-20 21:12
zuozhongkai 发表于 2017-8-8 11:09
PPT写的这么明显!LCD_Init()里面用到了printf()函数来通过串口打印LCD的ID,如果在调用LCD_Init()函数之前 ...

串口打印ID和程序后面只是单纯if语句判断LCD ID没有关系吧?

printf(" LCD ID:%x ",lcddev.id); //打印LCD ID
if(lcddev.id==0X9341)       

而且我更想知道的是为什么会对其他无关的IO口产生影响?还是PF7和PF8其实在哪里是有关的
142zjb
4楼-- · 2019-07-21 01:06
 精彩回答 2  元偷偷看……
cromarti
5楼-- · 2019-07-21 04:13
142zjb 发表于 2017-8-8 12:01
原来如此,就是说一但卡死在串口发送的while里面,导致我本身while里面想置低PF7和PF8就不起作用?除非一 ...

先初始化lcd就会卡死在printf那句根本不会继续初始化led,自然就不会响
冰封嗜魔
6楼-- · 2019-07-21 05:18
 精彩回答 2  元偷偷看……