如上圖,在STM32的Keil工程文件(Project)中一般都包含stm32f10x_it.c、stm32f10x_it.h和stm32f10x_conf.h這三個(gè)文件,但是在ST官方提供的標(biāo)準(zhǔn)庫(kù)“STM32F10x_StdPeriph_Lib_V3.5.0”中又找不到這三個(gè)文件,它們是做什么的,或起什么作用呢? 一、stm32f10x_conf.h文件
如上圖,打開stm32f10x_conf.h文件后發(fā)現(xiàn)其包含了stm32f10x芯片各外設(shè)的頭文件。也就是說在使用stm32f10x芯片的某一外設(shè)時(shí),不僅要把這個(gè)外設(shè)的驅(qū)動(dòng)文件添加到工程,還要把改外設(shè)的頭文件“包含到”stm32f10x_conf.h中。 如果不配置好stm32f10x_conf.h,當(dāng)使用外設(shè)如ADC TIM USART時(shí),就無法編譯通過。因?yàn)闆]有在stm32f10x_conf.h里加入相應(yīng)外設(shè)頭文件,根本不能調(diào)用固件外設(shè)庫(kù),即使你把固件庫(kù)文件加入了工程里。當(dāng)然,你可以在main.c里面全部加入需要的頭文件來解決,不過我覺得配置stm32f10x_conf.h簡(jiǎn)單方便,有組織! 二、stm32f10x_it.c和stm32f10x_it.h stm32f10x_it.c和stm32f10x_it.h是存放STM32工程中所有中斷函數(shù)的模板文件。在STM32工程文件中,如果你不用中斷,可以把這兩個(gè)文件都去掉。當(dāng)然,你也可以把中斷函數(shù)放在其他的“xxx.c文件”中,這時(shí)stm32f10x_it.c和stm32f10x_it.h也可以去掉。之所以很多STM32工程中都包含這兩個(gè)文件,是為了以后建工程方便,一般教程類的文件都包含這兩個(gè)文件。 注意,中斷函數(shù)的名稱都是固定的,不能自己隨便編。因?yàn)榫幾g的時(shí)候要將對(duì)應(yīng)的服務(wù)程序放在固定的中斷入口地址下,隨便起的名字編譯器不可能會(huì)認(rèn)識(shí),并且每一種不同型號(hào)的片子所對(duì)應(yīng)的服務(wù)程序名不同,比如中容量的片子只支持到EXTI4_IRQHandler,EXTI5_IRQHandler好像就沒有了。所以,編寫中斷函數(shù)程序時(shí),最好在stm32f10x_it.c和stm32f10x_it.h模板文件下編寫,即使不在stm32f10x_it.c和stm32f10x_it.h模板文件下編寫(在其他的“xxx.c文件”中編寫),也要參考stm32f10x_it.c和stm32f10x_it.h文件。 注意區(qū)分stm32f10x_exti.c和stm32f10x_exti.h文件。stm32f10x_exti.c和stm32f10x_exti.h文件是外設(shè)“外部中斷/事件控制器(EXTI)” 的驅(qū)動(dòng)文件和頭文件。stm32f10x_it.c和stm32f10x_it.h是STM32工程文件中中斷函數(shù)的“集合”。
|
|