<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Keil MDK下學(xué)習STM32注意事項

Keil MDK下學(xué)習STM32注意事項

作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò ) 收藏
MDK下學(xué)習使用STM32也快兩個(gè)禮拜了,基本掌握了STM32在MDK環(huán)境下的開(kāi)發(fā)流程和基本硬件程序的書(shū)寫(xiě)。其間,遇到了許多問(wèn)題,其中不少問(wèn)題花費了我相當多得時(shí)間才得以解決,現將這些問(wèn)題和解決方法列出。其中也有一些是學(xué)習過(guò)程中我覺(jué)得需要記下的注意事項。
1、STM32固件庫使用外圍設備的主要思路
在STM32中,外圍設備的配置思路比較固定。首先是使能相關(guān)的時(shí)鐘,一方面是設備本身的時(shí)鐘,另一方面如果設備通過(guò)IO口輸出還需要使能IO口的時(shí)鐘;最后如果對應的IO口是復用功能的IO口,則還必須使能AFIO的時(shí)鐘。
其次是配置GPIO,GPIO的各種屬性由硬件手冊的AFIO一章詳細規定,較為簡(jiǎn)單。
接著(zhù)相關(guān)設備需要如果需要使用中斷功能,必須先配置中斷優(yōu)先級,后文詳述。
然后是配置外圍設備的相關(guān)屬性,視具體設備而定,如果設備需要使用中斷方式,必須使能相應設備的中斷,之后需要使能相關(guān)設備。
最后如果設備使用了中斷功能,則還需要填寫(xiě)相應的中斷服務(wù)程序,在服務(wù)程序中進(jìn)行相應操作。
2、如果在源文件中未定義以下預定義,需在工程“C/C++”中預定義一欄 填寫(xiě)
“USE_STDPERIPH_DRIVER,STM32F10X_CL(器件所屬分類(lèi)),USE_STM3210C_EVAL(使用的評估板,庫自帶的歷程中需要根據"readme"文件提示添加,自己的工程除非是在一樣的評估板上運行,否則不需要預定義此項)”
3、NVIC的優(yōu)先級分組
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); //這個(gè)對所有中斷有效,一個(gè)程序中只能有一個(gè)分組
NVIC_PriorityGroup_n中n代表4位中有n位是給中斷分配搶占式優(yōu)先級的,4-n位是給中斷分配響應優(yōu)先級的。
4、NVIC_InitStructure.NVIC_IRQChannel =EXTI15_10_IRQn;//其中EXTI15_10_IRQn表示選中的通道為[15:10],不懂就跳到它的定義處看注釋
5、TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV4中的TIM_ClockDivision或 控制寄存器1(TIMx_CR1)中得位CKD[1:0] 為 時(shí)鐘分頻因子 (Clock division)
為定義在定時(shí)器時(shí)鐘(CK_INT)頻率與數字濾波器(ETR ,TIx)使用的采樣頻率之間的分頻比例,與用內部時(shí)鐘時(shí)counter使用的時(shí)鐘頻率(分頻是在PSC寄存器中設置)無(wú)關(guān)。
6、下面對該庫文件做個(gè)簡(jiǎn)單介紹:
LibrariesSTM32F10x_StdPeriph_Driver下的內容很好理解就是stm32的各個(gè)外設模塊驅動(dòng)代碼。
misc.h和misc.c是和CM3內核有關(guān)的NVIC和SysTick的驅動(dòng)代碼。
LibrariesCMSIS下是什么呢?cmsis英文全稱(chēng):CortexMicrocontroller Software InterfaceStandard,是Cortex系列處理器硬件抽象層,可以理解為cortex內核的軟件接口。
core_cm3.c, core_cm3.h
它們的目錄名為CoreSupport,說(shuō)明這兩個(gè)文件是CM3內核支撐文件,其他使用CM3內核的芯片也可以用,不一定是stm32。這兩個(gè)文件用來(lái)獲取設置CM3內核,配置一些內核寄存器。
stm32f10x.h, system_stm32f10x.c,system_stm32f10x.h和startup_stm32f10x_hd.s在DeviceSupport目錄下,說(shuō)明這幾個(gè)文件是和具體的芯片有關(guān)的,也就是stm32芯片的支撐文件。其中stm32f10x.h是標準外設庫的入口,使用標準外設庫的代碼中必須包含該頭文件。system_stm32f10x.c,system_stm32f10x.h這兩個(gè)文件提供函數用來(lái)初始化stm32芯片,配置PLL、系統時(shí)鐘和內置flash接口。startup_stm32f10x_hd.s是大容量型stm32芯片的啟動(dòng)文件。
7、USER下部分文件介紹
(1)stm32f10x_conf.h是用來(lái)添加所需外設頭文件的,要根據需要進(jìn)行更改,否則編譯會(huì )出現很多提示外設庫函數沒(méi)有定義 的錯誤。
(2)stm32f10x_it.c這是一個(gè)中斷處理文件,_it結尾,就是interrupt(中斷)的意思,說(shuō)明這個(gè)是整個(gè)工程的中斷處理函數,要是樓主沒(méi)有用到中斷的話(huà)就可以不添加進(jìn)去,還有,也可以去掉,將中斷函數添加到其它.c文件里也行.
stm32f10x_it.h中是對中斷處理函數的聲明。
(3)System_stm32f10x.c這個(gè)文件中定義的單片機的時(shí)鐘設置,修改時(shí)鐘設置直接修改里面的相應宏定義即可。調用System_Init()函數時(shí)會(huì )調用這個(gè)宏定義。由于在STM32的啟動(dòng)代碼中(eg.starup_stm32f10x_cl.s)就調用了System_Init()函數,因此在主函數中不需調用此函數。
8、24C02器件地址組成
八位前面4位代表器件類(lèi)型,eeprom為1010,A2、A1、A0為同類(lèi)型器件地址,主要看原理圖中相應位是接高還是接地。
eg.由STM32HY-GoldBullV3開(kāi)發(fā)板的原理圖可知,24C02的A2、A1、A0腳全部接地,所以24C02的地址應為1010000_,最后一位表示讀還是寫(xiě)。
9、在一個(gè)源文件中調用其他文件的函數,也需要在文件頭聲明,不然會(huì )有警告。
10、使用串口出現亂碼
原因分析(1)USART設置有錯(2)系統時(shí)鐘設置有誤
(3)如果使用的是MDK,使用printf()函數需要在工程屬性的“Target“-》”Code Generation“中勾選”UseMicroLIB“,否則使用printf函數會(huì )出現問(wèn)題,例如會(huì )出現亂碼。
11、如果錯誤提示“expect a ")" " 原因有可能為
(1)少寫(xiě)了半個(gè)括號 ")" (2)輸成中文輸入法的括號 (3)定義了與宏定義重復的變量
其中第三個(gè)最不容易發(fā)現,平常寫(xiě)程序時(shí)要注意。



關(guān)鍵詞: KeilMDKSTM32注意事

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>