按說,串口調試應該是很簡單的,可就偏偏困擾了我將近兩個周的時間,一籌莫展,接收GPS模塊發來的數據一直不對,今天早上通過GPS例程與我編寫的簡單程序一對比,發現USART3初始化不一致,
例程是uart_init(84,115200);usart3_init(42,38400);
而我的初始化是uart_init(84,115200);usart3_init(84,38400);
USART1與USART3,前者掛在APB2總線(高速總線)下,最大時鐘是84MHz,后者掛在APB1總線(低速總線)下最大時鐘是42MHz。所以usart3_init初始化參數中設置為84是錯誤的,所以數據接收不正確。
所以時鐘在ARM-微控制器中很重要,在使用某外設時,一定要搞清楚其時鐘配置及設置方法。所以這也是在調試片上外設驅動程序的所必先解決的。
該問題的解決,首先因為我一直都很上心,時刻嘗試用各種方法解決問題,雖然走了一些彎路,但是嘗試各種解決方法,總有一條路會走通。這才是該問題解決過程中除卻技術經驗外,所收獲的最有價值的東西,這是方法論的范疇。
|