|
問題描述:程序“一樣”,編譯沒有問題,但是功能不能實(shí)現(xiàn),不能回顯。
說明USART1波特率設(shè)置不成功
但USART1初始化程序“沒問題”。?
1.
朋友認(rèn)為我的工程建立有問題,但我以前用同一模板建的工程都沒有問題。?
2.
確認(rèn)是USART1配置肯定有問題。就把例程中正確的函數(shù)USART1_config()?中的程序段復(fù)制到我寫函數(shù)相同的位置。把原先我的程序屏蔽掉,再編譯--->下載---->功能正常。
然后就是將兩個(gè)程序段逐句主逐字地排除。
反思:為什么會(huì)出現(xiàn)這樣的程序。
我的編程思想是 例如GPIO口的使用
第一步定義結(jié)構(gòu)體
第二步?打開相應(yīng)的時(shí)鐘線
第三步對(duì)打開的GPIOx輸入輸出功能配置
第四步打開該GPIOx(需要用到就打開,不需要(如復(fù)用功能)就不需要)?
然后通過官方library3.50 去獲取相關(guān)的函數(shù)結(jié)構(gòu)以及結(jié)構(gòu)體的參數(shù)的枚舉、examples等
后來發(fā)現(xiàn)相應(yīng)的.C文件和.H文件都有大量的信息(stm32f10x_gpio.c andstm32f10x_gpio.h)?梢愿鶕(jù)自己的需求復(fù)制粘貼,認(rèn)為這樣就可以擺脫?的程序和自己以前編的。
?但是自己復(fù)制的程序由于自己對(duì)底層程序不了解、C++知識(shí)匱乏(特別是宏,結(jié)構(gòu)指針)所以沒有做到針對(duì)性的粘貼修改。
上述錯(cuò)誤的問題出現(xiàn)的就是誤以為這是打開GPIOx相應(yīng)時(shí)鐘線的底層函數(shù),結(jié)果這是DeinitializeGPIOx的函數(shù)。所以導(dǎo)致了.....這種以為“正確”的程序...還不知道哪里錯(cuò)了...
再反思:
自己的編程思想絕對(duì)是正確的,這樣才能活用函數(shù)庫開發(fā),只是基本功不到位啊....
下次粘貼程序....一定得確保程序的匹配性....
|
|