STM32F103學(xué)習(xí)之編寫第一個(gè)STM32程序
因?yàn)榈谝淮谓佑|STM的單片機(jī),各種寄存器和API都不熟悉,于是結(jié)合STM的庫函數(shù)和編程手冊對照理解。建立好工程之后,編寫main函數(shù)。
1.不管哪種單片機(jī),上電以后第一重要的事就是設(shè)置時(shí)鐘和初始化引腳。單看STM32F的時(shí)鐘:
能作為STM32F103的系統(tǒng)時(shí)鐘的有三種,外部時(shí)鐘,內(nèi)部時(shí)鐘,PLL時(shí)鐘。
跟蹤到SystemInit里面,一開始CPU工作于內(nèi)部時(shí)鐘,代碼初始化一些時(shí)鐘寄存器的值。然后調(diào)用SetSysSClock()設(shè)置新的時(shí)鐘源。
可以看到用戶只需要定義相應(yīng)的宏就可以設(shè)定時(shí)鐘。宏定義在本文件的最上面。我使用的芯片是STM32F103C6T8,文件中定義了
感覺STM的庫寫的不好的是如果72MHz時(shí)鐘不正常,時(shí)鐘初始化函數(shù)沒用任何返回信息,只能在STM提供的函數(shù)中增加:
有失程序的靈活性和獨(dú)立性。
而初始化代碼中的各種寄存器定義的賦值參考STM編程手冊,就明白了。主要的寄存器有這些:
2.設(shè)置GPIO: 點(diǎn)亮一個(gè)Led:PA3---電阻--Led--GND
Ctr+F5開始Debug,運(yùn)行程序,察看效果(下載程序之后程序沒有直接執(zhí)行,不知道我設(shè)置的問題還是本身就這樣子)。
后來發(fā)現(xiàn)可以在這里設(shè)置:
3.使用printf函數(shù)。需要配置選項(xiàng),不然的話,只要加入了printf,程序不能正常運(yùn)行。
編輯:admin 最后修改時(shí)間:2018-05-23