正点原子UCOSIII例程,KEIL移植到IAR

正点原子例程:精英板例10-2 UCOSIII使用信号量访问共享资源区
IAR版本:IAR 6.30

  1. 保留例程中以下文件夹在这里插入图片描述
  2. USER文件夹里保留以下文件在这里插入图片描述
    3.用IAR的启动文件替换在这里插入图片描述
    4.建立IAR工程在这里插入图片描述
    5.建立组并添加文件,添加时有的要选IAR文件夹下的在这里插入图片描述
    在这里插入图片描述
    6.设置工作路径和宏定义在这里插入图片描述
    6.选择MCU型号在这里插入图片描述
    7.其他设置在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

void WFI_SET(void)
{
	__ASM volatile("wfi");		  
}
//关闭所有中断
void INTX_DISABLE(void)
{		  
	__ASM volatile("cpsid i");
}
//开启所有中断
void INTX_ENABLE(void)
{
	__ASM volatile("cpsie i");		  
}
//设置栈顶地址
//addr:栈顶地址
__asm void MSR_MSP(u32 addr) 
{
    MSR MSP, r0 			//set Main Stack value
    BX r14
}

将sys.c中的上面代码替换为下面的

void WFI_SET(void)
{
	asm("WFI");  
}
//关闭所有中断
void INTX_DISABLE(void)
{		  
	
    asm("CPSID   I");	
    asm("BX      LR");
}
//开启所有中断
void INTX_ENABLE(void)
{

    asm("CPSIE   I");	
    asm("BX      LR");		  
}
//设置栈顶地址
//addr:栈顶地址
void MSR_MSP(u32 addr) 
{

    asm("MSR MSP, r0");	//set Main Stack value
    asm("BX r14");
}

//标准库需要的支持函数                 
struct __FILE 
{ 
	int handle; 

}; 

FILE __stdout;       
//定义_sys_exit()以避免使用半主机模式    
_sys_exit(int x) 
{ 
	x = x; 
} 

将USART.C中的上述代码替换为下面的

//标准库需要的支持函数                 
//struct __FILE 
//{ 
//	int handle; 
//
//}; 

FILE __stdout;       
//定义_sys_exit()以避免使用半主机模式    
void _sys_exit(int x) 
{ 
	x = x; 
} 

10.将os_cpu.h中的void OS_CPU_PendSVHandler (void);改为void PendSV_Handler (void);
将os_cpu_a.asm中的两个OS_CPU_PendSVHandler,改为PendSV_Handler
在这里插入图片描述
在这里插入图片描述
11.补充:SysTick中断,UCOSIII中用的void OS_CPU_SysTickHandler (void),正点原子例程中用的void SysTick_Handler(void),如果要用官方的,就要把启动文件中的SysTick_Handler,改为OS_CPU_SysTickHandler 。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值