回复【6楼】正点原子:
--------------------------------- 谢谢 老大 的解释 ————————
今天::学习 第二课 了—— 其中KEY0控制DS0,按一次亮,再按一次,就灭。
KEY1控制DS1,效果同KEY0。KEY_UP则同时控制DS0和DS1,按一次,他们的状态就翻转一次。
———有意思::运行 效果 正常———但是:与昨天一样 要修改 sys.c 和 usart.c 才能 Pass .
——似乎找到 sys.c 的答案了——嵌入汇编的 写法不同——这是别人的例子:
Keil 的写法:
__ASM void HardFault_Handler(void)
{
TST lr, #4 // Test for MSP or PSP
ITE EQ
MRSEQ r0, MSP
MRSNE r0, PSP
IMPORT HardFault_Handler_C
B HardFault_Handler_C
}
在IAR中的写法:
void HardFault_Handler( void )
{
__ASM("TST LR, #4");
__ASM("ITE EQ");
__ASM("MRSEQ R0, MSP");
__ASM("MRSNE R0, PSP");
__ASM("B hard_fault_handler_c");
}

************************** IAR 中 按照 下面 改写 Pass **********************************
//采用如下方法实现执行汇编指令WFI
void WFI_SET (void)
{
__ASM("WFI");
}
//关闭所有中断
void INTX_DISABLE(void)
{
__ASM("CPSID I");
}
//开启所有中断
void INTX_ENABLE(void)
{
__ASM("CPSIE I");
}
//设置栈顶地址
//addr:栈顶地址
void MSR_MSP(u32 addr)
{
__ASM("MSR MSP, r0"); //set Main Stack value
__ASM("BX r14");
}
//进入待机模式
*************************** IAR 中 按照 上面 改写 Pass *****************************
继续 求问——Usart.c —— 里的 问题 ——
再求问——程序 运行 正常,但是删除了一些东西 总担心。。。
|