1.stm32f103x_it.c中放的是中断的空函数
2.STM32是如何进入中断程序的:
首先,程序是放在0x80000000-0x8001ffff FLASH所在的代码段内;SRAM从地址0x20000000开始有20K大小 存放变量等。
当BOOT0=0时(BOOT0不要悬空啊!),中断向量放在0x80000000开始的地址,这时当ARM启动时程序其实是从0x80000004中存放的“函数地址”开始执行的,要强调函数地址这一点。
3.stm32f10x_it.c中点中断服务函数调用其他文件的函数能通过编译但会出现警告:
最好把相关的头文件添加进去就可以。使用其他文件的全局变量一定要添加外部变量声明extern,
如:在AAA.c中声明unsigned char a=0;
在BBB.c中要调用该变量的话要也要声明extern unsigned char a;
4.中断服务程序的名称都是固定的:
不能自己随便编,因为编译的时候要将对应的服务程序放在固定的中断入口地址下,随便起的名字编译器不可能会认识,并且每一种不同型号的片子所对应的服务程序名不同,比如中容量的片子只支持到EXTI4_IRQHandler,EXTI5_IRQHandler好像就没有了。这些入口函数名具体是在哪个文件中同地址对应起来的我还没有找到,但是你可以从芯片的启动文件中看到,比如中容量的片子就在startup_stm32f10x_md.s中可以看到所有可用的服务程序入口名,编写是照着里面的写就好了(当然服务程序的具体内容还是你自己写,放在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)
{}