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