stm32f10x_it.c 定义的程序列表模板(stm32f103x_it.c中放的是中断的空函数)
1.stm32f103x_it.c中放的是中斷的空函數(shù)
2.STM32是如何進(jìn)入中斷程序的:
????首先,程序是放在0x80000000-0x8001ffff FLASH所在的代碼段內(nèi);SRAM從地址0x20000000開始有20K大小 存放變量等。
????當(dāng)BOOT0=0時(shí)(BOOT0不要懸空啊!),中斷向量放在0x80000000開始的地址,這時(shí)當(dāng)ARM啟動時(shí)程序其實(shí)是從0x80000004中存放的“函數(shù)地址”開始執(zhí)行的,要強(qiáng)調(diào)函數(shù)地址這一點(diǎn)。
3.stm32f10x_it.c中點(diǎn)中斷服務(wù)函數(shù)調(diào)用其他文件的函數(shù)能通過編譯但會出現(xiàn)警告:
最好把相關(guān)的頭文件添加進(jìn)去就可以。使用其他文件的全局變量一定要添加外部變量聲明extern,
如:在AAA.c中聲明unsigned char a=0;
在BBB.c中要調(diào)用該變量的話要也要聲明extern unsigned char a;
4.中斷服務(wù)程序的名稱都是固定的:
????不能自己隨便編,因?yàn)榫幾g的時(shí)候要將對應(yīng)的服務(wù)程序放在固定的中斷入口地址下,隨便起的名字編譯器不可能會認(rèn)識,并且每一種不同型號的片子所對應(yīng)的服務(wù)程序名不同,比如中容量的片子只支持到EXTI4_IRQHandler,EXTI5_IRQHandler好像就沒有了。這些入口函數(shù)名具體是在哪個文件中同地址對應(yīng)起來的我還沒有找到,但是你可以從芯片的啟動文件中看到,比如中容量的片子就在startup_stm32f10x_md.s中可以看到所有可用的服務(wù)程序入口名,編寫是照著里面的寫就好了(當(dāng)然服務(wù)程序的具體內(nèi)容還是你自己寫,放在stm32f10x_it.c里)。
5.stm32f10x_it.c 定義的程序列表模板如下:
#include "stm32f10x_it.h"void NMIException(void)
{}
{
?
? while (1)
? {}
}
void MemManageException(void)
{
?
? while (1)
? {}
}
void BusFaultException(void)
{
?
? while (1)
? {}
}
void UsageFaultException(void)
{
?
? while (1)
? {}
}
void DebugMonitor(void)
{}
void SVCHandler(void)
{}
void PendSVC(void)
{}
void SysTickHandler(void)
{}
void WWDG_IRQHandler(void)
{}
void PVD_IRQHandler(void)
{}
{}
void RTC_IRQHandler(void)
{}
void FLASH_IRQHandler(void)
{}
void RCC_IRQHandler(void)
{}
void EXTI0_IRQHandler(void)
{}
void EXTI1_IRQHandler(void)
{}
void EXTI2_IRQHandler(void)
{}
void EXTI3_IRQHandler(void)
{}
void EXTI4_IRQHandler(void)
{}
void DMA1_Channel1_IRQHandler(void)
{}
void DMA1_Channel2_IRQHandler(void)
{}
void DMA1_Channel3_IRQHandler(void)
{}
void DMA1_Channel4_IRQHandler(void)
{}
void DMA1_Channel5_IRQHandler(void)
{}
void DMA1_Channel6_IRQHandler(void)
{}
void DMA1_Channel7_IRQHandler(void)
{}
void ADC1_2_IRQHandler(void)
{}
void USB_HP_CAN_TX_IRQHandler(void)
{}
void USB_LP_CAN_RX0_IRQHandler(void)
{}
void CAN_RX1_IRQHandler(void)
{}
void CAN_SCE_IRQHandler(void)
{}
void EXTI9_5_IRQHandler(void)
{}
void TIM1_BRK_IRQHandler(void)
{}
void TIM1_UP_IRQHandler(void)
{}
void TIM1_TRG_COM_IRQHandler(void)
{}
void TIM1_CC_IRQHandler(void)
{}
void TIM2_IRQHandler(void)
{}
void TIM3_IRQHandler(void)
{}
void TIM4_IRQHandler(void)
{}
void I2C1_EV_IRQHandler(void)
{}
void I2C1_ER_IRQHandler(void)
{}
void I2C2_EV_IRQHandler(void)
{}
void I2C2_ER_IRQHandler(void)
{}
void SPI1_IRQHandler(void)
{}
void SPI2_IRQHandler(void)
{}
void USART1_IRQHandler(void)
{}
void USART2_IRQHandler(void)
{}
void USART3_IRQHandler(void)
{}
void EXTI15_10_IRQHandler(void)
{}
void RTCAlarm_IRQHandler(void)
{}
void USBWakeUp_IRQHandler(void)
{}
void TIM8_BRK_IRQHandler(void)
{}
void TIM8_UP_IRQHandler(void)
{}
void TIM8_TRG_COM_IRQHandler(void)
{}
void TIM8_CC_IRQHandler(void)
{}
void ADC3_IRQHandler(void)
{}
void FSMC_IRQHandler(void)
{}
void SDIO_IRQHandler(void)
{}
void TIM5_IRQHandler(void)
{}
void SPI3_IRQHandler(void)
{}
void UART4_IRQHandler(void)
{}
void UART5_IRQHandler(void)
{}
void TIM6_IRQHandler(void)
{}
void TIM7_IRQHandler(void)
{}
void DMA2_Channel1_IRQHandler(void)
{}
void DMA2_Channel2_IRQHandler(void)
{}
void DMA2_Channel3_IRQHandler(void)
{}
void DMA2_Channel4_5_IRQHandler(void)
{} 《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀
總結(jié)
以上是生活随笔為你收集整理的stm32f10x_it.c 定义的程序列表模板(stm32f103x_it.c中放的是中断的空函数)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用宏定义代替printf函数
- 下一篇: STM32中的timers中断处理函数