最近在搞STM8的IAP,想在Bootloader与APP中都用中断,看来网上的大神说的方案,可以将中断向量重定向到RAM,可是搞了两天仍然没有搞定,按如下的方法,BOOT单独可以正常串口中断(屏蔽了跳转到APP)而BOOT跳转到APP就不能中断,感觉APP中的中断向量重定向有点问题,但是又不知道问题在哪,特来求助各位大神 boot: icf文件 define region NearData = [from 0x0000 to 0x077F]; define region Eeprom = [from 0x4000 to 0x43FF]; define region BootROM = [from 0x6000 to 0x67FF]; define region NearFuncCode = [from 0x8000 to 0xA7FF]; define region FarFuncCode = [from 0x8000 to 0xA7FF]; define region HugeFuncCode = [from 0x8000 to 0xA7FF]; bOOT里的主要代码: #if 1 typedef void(*isr_type_t)(void); typedef struct{ uint16_t interrupt_instuction; isr_type_t interrupt_handler; }interrupt_vector; #pragma location=0x0780 interrupt_vector vector_table_[32]; #endif #pragma vector=23 __interrupt void UART2_RX_IRQ(void) { ........//中断 } void main(void) { vector_table_[23].interrupt_instuction=0x8200; vector_table_[23].interrupt_handler=(isr_type_t)&UART2_RX_IRQ; } APP: icf文件 define region NearData = [from 0x0000 to 0x077F]; define region Eeprom = [from 0x4000 to 0x43FF]; define region BootROM = [from 0x6000 to 0x67FF]; define region NearFuncCode = [from 0xA800 to 0xFFFF]; define region FarFuncCode = [from 0xA800 to 0xFFFF]; define region HugeFuncCode = [from 0xA800 to 0xFFFF]; APP中部分代码 重定向 #pragma location=0x0780 uint32_t vector_table_[32]; vector_table_[0]=0x82008080; for(i=1;i<32;i++) { vector_table_=(0X82000000+0xA800+(i*4)); } |
STM8S003F3U6 请求各位大佬支援,但是遇到如下问题。。。这样就一定是这颗芯片的问题吗?
STVD如何生成库文件
STM8 flash 库函数 startaddress = startaddress + ((uint32_t)BlockNum * FLASH_BLOCK_S
stm 8 flash 在RAM运行代码的问题,是不是库函数有问题 Library call (?sll32_l0_l0_a) from within a
STM 有能替代MCHC912B32CFUE8 / NXP的型号吗?
STM8S的CAN总线使用
STM8L151在使用DAC功能后严重发热
STM8 IIC SLAVE 400K
STM8S 定时器1互补输出pwm
STM8S003F3 NRST电压低,无法开机
评分
查看全部评分