之前一直是使用stm32f103系列,直接使用正點原子的教程,並沒有關注過建立工程的問題,現在由於某些原因,需要使用stm32f072c8t6,引腳功能大致相同,但沒有現成能用的工程,所以需要手動建立乙個工程。
參考部落格1:
參考部落格2:
推薦參考部落格2進行建立。部落格1中的第17點,需要再新增乙個」…\libraries\cmsis\include「,否則編譯會出現找不到」core_cm0.h「檔案的提示。
資料手冊:
因為專案需要用到串列埠2,3。我在除錯的時候串列埠1,2都能正常使用,但是串列埠3不知道為什麼初始化失敗。之後檢視資料手冊發現,串列埠1,2用的是gpio_af_1,串列埠3用的是gpio_af_4,資料手冊41-43頁。。就是因為這個我調了兩天。。。。
下面貼出我的串列埠1,2,3的初始化,我用的是stm32f072c8t6。
void
usart1_init
(u32 bound)
void
usart2_init
(u32 bound)
void
usart3_init
(u32 bound)
還有時鐘配置。記錄一下。。
void
rcc_configuration()
while
((hsestatus ==0)
&&(startupcounter != hse_startup_timeout));
if((rcc->cr & rcc_cr_hserdy)
!= reset)
else
if(hsestatus ==
(uint32_t)
0x01
)/* select pll as system clock source */
rcc->cfgr &
=(uint32_t)
((uint32_t)
~(rcc_cfgr_sw));
rcc->cfgr |
=(uint32_t)rcc_cfgr_sw_pll;
/* wait till pll is used as system clock source */
while
((rcc->cfgr &
(uint32_t)rcc_cfgr_sws)
!=(uint32_t)rcc_cfgr_sws_pll)
}else
/* select pll as system clock source */
rcc->cfgr &
=(uint32_t)
((uint32_t)
~(rcc_cfgr_sw));
rcc->cfgr |
=(uint32_t)rcc_cfgr_sw_pll;
/* wait till pll is used as system clock source */
while
((rcc->cfgr &
(uint32_t)rcc_cfgr_sws)
!=(uint32_t)rcc_cfgr_sws_pll)
}}
建立第乙個stm32工程感觸
哦,三天,跟同學聚會時在想這個問題,出去k歌還是這個問題,三天啊,自己都差點吐了!編譯0 error,0 warning,但以除錯就有問題了。開始出現的問題 error65 no write permiso 在網上收羅半天,無果,拿著自己建的工程與例程反覆對比,還是毫無頭緒.而且自己建的工程完全用的...
在MDK上建立乙個C 的STM32開發工程
最近,我驚訝地發現居然可以用c 進行嵌入式程式開發,甚至是裸系統程式。之前,做微控制器開發 stm32上程式開發,想到的都是c語言 組合語言,根 本就沒有考慮過還可以用c 語言做開發。近日,在學習公司的專案之後,發現c 有其獨道之處。開發起來比c語言更方便架構搭建與程式管理。總而言之,c與c 各有各...
乙個跟STM32F0中斷優先順序有關的話題
經過跟他深入溝通,了解到stm32f031跟外界有uart資料通訊並開啟了rxne接收中斷,還有對外的ad取樣動作,通過定時器定時觸發ad轉換,並開啟了adc1的轉換完成中斷。ad觸發間隔為2秒。再就是些其它對外的gpio操作的東西。他陳述當波特率低於9600,甚至更低時就很難遇到丟包的現象,只要當...