举例1
boot程序里面初始化了串口2 和定时器14
int main(void)
{
__set_PRIMASK(0); /*打开中断*/
SCB->VTOR = FLASH_BASE_ADDRESS; /*中断向量地址*/
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
delay_init(240);
system_gpio_init();/*初始化串口gpio*/
log_dma_init(115200);/*初始化串口 RX用普通中断接收 TX用DMA发送*/
timer14_init();/*100HZ 初始化一个定时器 仅仅判断串口接收完成*/
while(1)
{
main_thread();
}
}
方法1: disbale掉boot里面用到中断
void chip_deinit(void)
{
GPIO_Reset(GPIOA);
GPIO_Reset(GPIOB);
GPIO_Reset(GPIOC);
GPIO_Reset(GPIOD);
GPIO_Reset(GPIOE);
USART_Reset(USART1);
USART_Reset(USART2);
USART_Reset(USART3);
USART_Reset(UART4);
USART_Reset(UART5);
USART_Reset(USART6);
TMR_Reset(TMR14);
TMR_INTConfig(TMR14,TMR_INT_Overflow,DISABLE); //要关掉
__set_PRIMASK(1); /*关闭中断,目的是防止其他中断 打断跳转 app*/
}
方法2:在app程序里加上boot用到的中断函数
void TMR8_TRG_COM_TMR14_IRQHandler(void)
{
if (TMR_GetINTStatus(TMR14,TMR_INT_Overflow)!=RESET) {
/*clear_flag*/
TMR_ClearITPendingBit(TMR14,TMR_INT_Overflow);
}
}