没有合适的资源?快使用搜索试试~ 我知道了~
STM8启动过程: 1)首先bootloader(ROM中)从0x6000地址启动。
资源推荐
资源详情
资源评论
STM8启动流程
流程
说明:原创文章,转载请注明出处。
STM8启动过程:
1)首先bootloader(ROM中)从0x6000地址启动。
2)从bootloader跳转到0x8000(内部FLASH起始地址),0x8000后面才是软件设计可以控制的。很多人不明白的是stm8库里面提供的相关代码,具体流程如下:
a)中断向量表:大家都知道0x8000地址放的是中断函数的地址,而‘0x82’则是stm8内部的中断指令。程序执行到这会自动跳转到中断向量地址所在函数。
b)mian函数到底从哪开始?
这也许是大家最纳闷的了,起始原来很简单:关键是stm8有个复位中断,定义在
stm8_interrupt_vector.c中:
(void @near (*)())0x8200,
_stext, /* RESET */” extern void @near _stext(); /* startup routine */
void @near (* const _vectab[])() =
{
(void @near (*)())0x8200,
_stext, /* RESET */
(void @near (*)())0x8200,
TRAP_IRQHandler, /* TRAP - Software interrupt */
流程
说明:原创文章,转载请注明出处。
STM8启动过程:
1)首先bootloader(ROM中)从0x6000地址启动。
2)从bootloader跳转到0x8000(内部FLASH起始地址),0x8000后面才是软件设计可以控制的。很多人不明白的是stm8库里面提供的相关代码,具体流程如下:
a)中断向量表:大家都知道0x8000地址放的是中断函数的地址,而‘0x82’则是stm8内部的中断指令。程序执行到这会自动跳转到中断向量地址所在函数。
b)mian函数到底从哪开始?
这也许是大家最纳闷的了,起始原来很简单:关键是stm8有个复位中断,定义在
stm8_interrupt_vector.c中:
(void @near (*)())0x8200,
_stext, /* RESET */” extern void @near _stext(); /* startup routine */
void @near (* const _vectab[])() =
{
(void @near (*)())0x8200,
_stext, /* RESET */
(void @near (*)())0x8200,
TRAP_IRQHandler, /* TRAP - Software interrupt */
(void @near (*)())0x8200,
TLI_IRQHandler, /* irq0 - External Top Level interrupt (TLI) */
(void @near (*)())0x8200,
AWU_IRQHandler, /* irq1 - Auto Wake Up from Halt interrupt */
(void @near (*)())0x8200,
CLK_IRQHandler, /* irq2 - Clock Controller interrupt */
(void @near (*)())0x8200,
EXTI_PORTA_IRQHandler, /* irq3 - External interrupt 0 (GPIOA) */
(void @near (*)())0x8200,
EXTI_PORTB_IRQHandler, /* irq4 - External interrupt 1 (GPIOB) */
(void @near (*)())0x8200,
EXTI_PORTC_IRQHandler, /* irq5 - External interrupt 2 (GPIOC) */
(void @near (*)())0x8200,
EXTI_PORTD_IRQHandler, /* irq6 - External interrupt 3 (GPIOD) */
剩余14页未读,继续阅读
资源评论
panxiang1011
- 粉丝: 3
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功