在STM32F中使用UCOSII如何支持低功耗模式

在不在系统的裸奔的软件中,使用RTC+STOP模式很容易实现低功耗模式,但是在UCOS之类的操作系统,实现这一模式就有点麻烦,最大的问题是任务切换是无法控制的,经常出现唤醒之后程序跑飞的情况。

首先,要把休眠的代码段放在低优先级任务中,不一定是系统自带的空闲任务,也可以是用户自定义的最低优先级的任务。

其次,在休眠代码的前后加上两个指令:

//===================================================================================

OSSchedLock();//禁止任务调度

while(1)

{

.....//休眠代码RTC+STOP

PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);

....//判断是否退出休眠

}

....//重新初始化系统时钟及GPIO

....//OS_CPU_SysTickInit();//systick重新初始化 非常重要的,否则跑飞

OSSchedUnlock();//允许任务调度 

//===================================================================================

其实只需要增加一下两个指令就可以解决任务切换问题。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F407移植uCos II是将uCos II实时操作系统移植到STM32F407系列微控制器上的过程。移植uCos II可以使嵌入式系统具备多任务处理和实时性能,提高系统的可靠性和灵活性。 首先,需要在STM32F407上配置系统时钟和外设,以便与uCos II进行通信。可以使用寄存器级别的编程技术来配置时钟和外设,建立与uCos内核的通信。 其次,需要为STM32F407编写适配器代码,以实现与uCos II内核的接口。适配器代码主要包括时钟断处理函数、任务切换函数、内存管理函数等。这些函数需要根据具体的硬件特性来编写。 然后,需要对STM32F407上的存储器进行划分,为uCos II的内核堆栈、任务堆栈和其他数据结构分配内存空间。 接下来,需要将uCos II的源代码添加到项目,并根据需要进行配置和编译。可以根据系统的需求选择合适的uCos II配置选项,并根据实际情况配置任务、消息队列、信号量等。 最后,在主函数初始化uCos II内核,并创建任务。可以根据系统的需要创建不同的任务,并设置其优先级和堆栈大小。 总的来说,STM32F407移植uCos II的过程包括配置系统时钟和外设、编写适配器代码、分配存储器空间、添加源代码、配置和编译、初始化内核和创建任务等步骤。通过这些步骤,可以成功地将uCos II移植到STM32F407系列微控制器上,实现多任务处理和实时性能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值