最近在搞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)); } |
STMS005K6T6 如何采集内部参考电压。
stm8s003 adc中断和通道切换的问题
adc施密特触发器stm8
stm8l051f3 TSSOP20 封装,待机模式下,2天后,电流突然增加到140UA
STM8S用STVP烧录怎么加密?
如何使用ST官网例程_LIN总线通讯_STM8AF
STM8 LIN
IAR代码编辑太费劲了,想问一下有没有好的方法,试了VScode但是头文件老是报错,调了很久也没调好,想换个方法了。
想问一下各位大佬,IAR下载调试代码时出现 warning: is an illegal data sample expression IAR是什么意思啊?
STM8S标准库TIM1编码器功能不计数,请大师帮我看看
评分
查看全部评分