1、给特定地址赋值的方法:
比如给0x4E000000的地址赋值10
(*(volatile unsigned *)0x4E000000)=10
2、函数指针定义需要用到关键字typedef
例如:typedef int (*initOSFile_func_t)(void);
这个时候initOSFile_func_t就是函数指针类型了
3、直接调用地址例如跳转到0x31000000;
( (void (*)( ))0x31000000 ) ( );
STM32
keil里面的关中断和开中断
__disable_irq() ; //关闭总中断
__enable_irq() ; //打开总中断
//关闭所有中断(但是不包括fault和NMI中断)
__asm void INTX_DISABLE(void)
{
CPSID I
BX LR
}
//设置栈顶地址
//addr:栈顶地址
__asm void MSR_MSP(u32 addr)
{
MSR MSP, r0 //set Main Stack value
BX r14
}
汇编跳转
__asm void Jump1(u32 appxaddr)
{
cpsid i //Disable interrupt
ldr r1, [r0] //Get MSP location
ldr r2, [r0, #4] //Get resethanler address
movs r0, #0
msr CONTROL, r0 //Use MSP
msr MSP, r1
bx r2
}