STM32F429IG之UCOSIII移植

准备
1.F429工程模板(我用的是我平时的)
2.ucosiii源码,官网下载的

一,创建

根据个人习惯创建四个文件夹
APP:
在这里插入图片描述
CPU:
在这里插入图片描述
LIB:
在这里插入图片描述
PORTS:
在这里插入图片描述好了,然后添加到工程。

二,时钟问题

首先修改工程的启动文件“ startup_stm32f10x_hd.s”。其中将 PendSV_Handler 和 SysTick_Handler 分 别 改 为OS_CPU_PendSVHandler 和 OS_CPU_SysTickHandler,共两处,因为 uCOS 官方已经给我们处理好对应的中断函数,就无需我们自己处理与系统相关的中断了,同时我们还需要将stm32f10x_it.c 文件中的 PendSV_Handler 和 SysTick_Handler 函数注释掉。
以上是野火的处理方式,我是:
os_cpu_a.s里所有的OS_CPU_PendSVHandler改成PendSV_Handler。
中断服务函数里要加
OSIntEnter();
OSTimeTick();
OSIntExit();
如:

//软件定时器和UCOS的系统定时用的都是SysTick,不知道会不会冲突,回头试一下
void SysTick_IRQHandle(void)   
{   
	OSIntEnter();
	SysTickCnt += SYS_TICK_TIME; //这个是我自己原始函数的定时器,不用管
	OSTimeTick();
	OSIntExit();	
}

三,配置

3.1 FPU(浮点运算单元)

M4/M7 内核带有 FPU(浮点运算单元)的处理器,如果想要使用 FPU,要在启动文件中添加以下代码,处理器必须处于特权模式才能读取和写入 CPACR。

IF {FPU} != "SoftVFP"
                                                ; Enable Floating Point Support at reset for FPU
                LDR.W   R0, =0xE000ED88         ; Load address of CPACR register
                LDR     R1, [R0]                ; Read value at CPACR
                ORR     R1,  R1, #(0xF <<20)    ; Set bits 20-23 to enable CP10 and CP11 coprocessors
                                                ; Write back the modified CPACR value
                STR     R1, [R0]                ; Wait for store to complete
                DSB
                
                                                ; Disable automatic FP register content
                                                ; Disable lazy context switch
                LDR.W   R0, =0xE000EF34         ; Load address to FPCCR register
                LDR     R1, [R0]
                AND     R1,  R1, #(0x3FFFFFFF)  ; Clear the LSPEN and ASPEN bits
                STR     R1, [R0]
                ISB                             ; Reset pipeline now the FPU is enabled
                ENDIF

os_cfg.h 钩子函数开关,按需裁剪。
os_cfg_app.h 系统应用配置的头文件,系统默认的任务配置,如任务的优先级、堆栈大小等基本信息

四,到这就可以用了

没什么报错。。。都是些小问题,建了两个任务后能用了。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值