STM32在车尾灯实际产品规格表中用哪个RTOS好

基于STM32F429的freeRTOS的低功耗学习 - 【其他嵌入式操作系统】 - 电子工程世界-论坛
后使用快捷导航没有帐号?
请完成以下验证码
查看: 5401|回复: 4
基于STM32F429的freeRTOS的低功耗学习
在线时间43 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 22, 距离下一级还需 178 积分
一粒金砂(中级), 积分 22, 距离下一级还需 178 积分
最近在研究freeRTOS的低功耗特性,平台是STM32F429控制器,低功耗是现在电子消费类产品的一大要求,尤其是对手机,手环这类便携类产品,大家如果对这方面感兴趣可以交流一下,废话少说,直接上菜一、先从F429的低功耗模式说起
& & 1、F4的三种模式:
& && &F4系列的控制器有三种低功耗状态,分别是休眠状态、stop状态以及standby状态
& && &休眠状态:内核(包括MPU)停止工作,外设(定时器、时钟等)仍然在工作,退出睡眠模式后程序从停止处继续执行,该模式类似于人在睡觉,大脑已经停止思考,但心脏脉搏仍在跳动
& && &stop状态:内核包括1.2V区域的所有时钟停止运作,PLLs, HSI 和HSE RC oscillators被失能,计数器和寄存器的内容不变,并且在该模式下电压和内部FLASH也可以通过软件事先的配置进入低功耗模式,当内部flash进入低功耗模式时,那么在退出该模式后也会有相应的启动延时,故对实时性要求高的系统对是否试FLASH进入低功耗模式应慎重,退出该模式后程序从停止处开始执行,
& & sdandby状态:功耗最低状态,在STOP状态的基础上,电压调节器失能,除backup区域,SRAM以及寄存器的值全部丢失,故退出该状态后,系统类似于复位
2、F4如何进入睡眠模式和stop模式以及如何退出
& && &关于这个问题一张表格就可很清晰的说明,如下:
QQ图片33.png (65.18 KB, 下载次数: 0)
19:53 上传
硬件部分就说这么多吧,想要详细的了解朋友就要去看数据手册了
二、freeRTOS的低功耗原理
& & 一句话概括就是实时改变滴答时钟的中断频率
& &&&我们知道,操作系统都有一个滴答时钟,以一定的频率产生定时器中断,freeRTOS使用systick时钟产生滴答时钟,在操作系统的运行过程中,大部分时间可能在运行空闲任务,也就是这个时候无事可干,那么如果我们能在无事可干的时间让系统进入睡眠或者停止模式,那么系统的功耗是不是就会降下去呢,答案是肯定的,那么我们每次进入空闲任务之后就让系统休眠,直至产生滴答时钟中断被唤醒,在中断服务函数中查看是不是有需要运行的任务运行,但是我们一般的滴答时钟周期设置为10ms,也就是说不管有没有任务运行,必须10ms醒过来检测一次
& &但是freeRTOS不满足于这样,他想到了一个更“省电”的方法:原理如下,当我们开启freeRTOS的低功耗模式后,系统会在空闲模式中计算出下一次某一个应用任务开始运行的时间,那么freeRTOS就设置SYSTICKD的重装值,使之恰好在这个时间点产生滴答时钟中断,然后“睡觉”,直至中断发生推出睡眠,从而进行任务的切换,这样系统就只需要在必须醒来的时候醒来进行任务切换,而不必每10ms就醒过来检测一次,那么是不是可以美美的睡上一觉呢
问题:如果需要睡眠的时间太长,超过了systick所能产生的最大时钟周期怎么办?
答:freeRTOS提出了解决方案,那就是使用普通定时器作为滴答时钟,通过改变其分频数来达到systick不能达到的的时钟周期
三、freertos低功耗具体的实现过程
& && &1、找到空闲函数static portTASK_FUNCTION( prvIdleTask, pvParameters ),我们截取部分代码,并用红色字体标出重要的点 &font color=&#ff0000&&& & & & & & & & #if ( configUSE_TICKLESS_IDLE != 0 )& &&&//点1&/font& & & & & & & & & { & & & & & & & & TickType_t xExpectedIdleT
& & & & & & & & & & & & /* It is not desirable to suspend then resume the scheduler on & & & & & & & & & & & & each iteration of the idle task.&&Therefore, a preliminary & & & & & & & & & & & & test of the expected idle time is performed without the & & & & & & & & & & & & scheduler suspended.&&The result here is not necessarily & & & & & & & & & & & & valid. */ &font color=&#ff0000&&& & & & & & & & & & & & xExpectedIdleTime = prvGetExpectedIdleTime();& &&&//点2&/font&
& & & & & & & & & & & & if( xExpectedIdleTime &= configEXPECTED_IDLE_TIME_BEFORE_SLEEP ) & & & & & & & & & & & & { & & & & & & & & & & & & & & & & vTaskSuspendAll(); & & & & & & & & & & & & & & & & { & & & & & & & & & & & & & & & & & & & & /* Now the scheduler is suspended, the expected idle & & & & & & & & & & & & & & & & & & & & time can be sampled again, and this time its value can & & & & & & & & & & & & & & & & & & & & be used. */ & & & & & & & & & & & & & & & & & & & & configASSERT( xNextTaskUnblockTime &= xTickCount ); & & & & & & & & & & & & & & & & & & & & xExpectedIdleTime = prvGetExpectedIdleTime();
& & & & & & & & & & & & & & & & & & & & if( xExpectedIdleTime &= configEXPECTED_IDLE_TIME_BEFORE_SLEEP ) & & & & & & & & & & & & & & & & & & & & { & & & & & & & & & & & & & & & & & & & & & & & & traceLOW_POWER_IDLE_BEGIN(); &font color=&#ff0000&&& & & & & & & & & & & & & & & & & & & & & & & & portSUPPRESS_TICKS_AND_SLEEP( xExpectedIdleTime );& && &//点3&/font& & & & & & & & & & & & & & & & & & & & & & & & & traceLOW_POWER_IDLE_END(); & & & & & & & & & & & & & & & & & & & & } & & & & & & & & & & & & & & & & & & & & else & & & & & & & & & & & & & & & & & & & & { & & & & & & & & & & & & & & & & & & & & & & & & mtCOVERAGE_TEST_MARKER(); & & & & & & & & & & & & & & & & & & & & } & & & & & & & & & & & & & & & & } & & & & & & & & & & & & & & & & ( void ) xTaskResumeAll(); & & & & & & & & & & & & } & & & & & & & & & & & & else & & & & & & & & & & & & { & & & & & & & & & & & & & & & & mtCOVERAGE_TEST_MARKER(); & & & & & & & & & & & & } & & & & & & & & }复制代码
点1:这是一个条件编译选择项,configUSE_TICKLESS_IDLE 为低功耗的宏开关,设为1时开启低功耗模式
点2: prvGetExpectedIdleTime()用于计算从现在到下一个任务运行的时间,也就是可以睡大觉的时间
点3:portSUPPRESS_TICKS_AND_SLEEP()通过xExpectedIdleTime参数调整systick的重装值然后开始“睡大觉”等待下一次唤醒,这个函数可以认真研读一下,比较巧妙
四:freeRTOS的省电效果
& & 在F429开发板上面,我验证了一下freeRTOS低功耗的省电效果,我的工程是建立两个任务,一个任务是让led1灯以500ms亮灭,另一个任务是让led2灯以1000ms亮灭
& &&&首先是关闭低功耗特性,使程序运行,发现电流在125mA~134mA,注意,单纯的看这个数据没有意义,我们需要和低功耗模式系下进行比较,因为开发板上面还有其他的芯片,功耗也是不可忽略的
& & 接下来通过相关配置开启freeRTOS睡眠模式,发现电流在99mA~111mA之间,比正常工作模式减少了25mA左右
& & 置位SLEEPDEEP位,使freeRTOS进入stop模式,发现电流在88mA~96mA之间&&比正常工作模式减少了40mA左右
从上面的3组数据看出,freeRTOS的低功耗模式效果相当明显,减少的40mA对某些电子产品来说是非常重要的,当然我们这只是粗略的进行验证,freeRTOS还提供了接口函数configPRE_SLEEP_PROCESSING( xModifiableIdleTime );和configPOST_SLEEP_PROCESSING( xExpectedIdleTime );,这两个函数的位置分别位于_wfi指令前面和后面,用户可以在进入睡眠之前通过configPRE_SLEEP_PROCESSING( xModifiableIdleTime )函数对控制器的外设进行配置,以达到最优的省电效果,退出睡眠模式后通过configPOST_SLEEP_PROCESSING(xModifiableIdleTime )对之前配置的外设进行还原
低功耗这个东西是一个很灵活的东西,在硬件层面和软件层面都可以不断地优化从而使功耗不断降低。
挂一漏万,期待各位的什么纠正
在线时间684 小时
芯币2208枚
E金币185枚
TA的帖子TA的资源
我们的事件驱动也是这么玩的
对软件定时器一直很陌生,&
LPC4370,秒天秒地秒空气
在线时间43 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 22, 距离下一级还需 178 积分
一粒金砂(中级), 积分 22, 距离下一级还需 178 积分
我们的事件驱动也是这么玩的
.cn/thread--1.html
对软件定时器一直很陌生,
其实STM32系列的寄存器设置非常不适合新手
新手学单片机,应该拿新唐的片子玩&
在线时间684 小时
芯币2208枚
E金币185枚
TA的帖子TA的资源
对软件定时器一直很陌生,
其实STM32系列的寄存器设置非常不适合新手
新手学单片机,应该拿新唐的片子玩
LPC4370,秒天秒地秒空气
在线时间165 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 26, 距离下一级还需 174 积分
一粒金砂(中级), 积分 26, 距离下一级还需 174 积分
分析的很到位,真的。
EEWORLD 官方微信
EE福利 唾手可得
Powered by网站已改版,请使用新地址访问:
STM32F030C8T6-FreeRTOS 这是 移植到 系列单片机的实例,已经验证成功, 的驱动了LED,24L01,S SCM 开发 271万源代码下载-
&文件名称: STM32F030C8T6-FreeRTOS& & [
& & & & &&]
&&所属分类:
&&开发工具: C#
&&文件大小: 3755 KB
&&上传时间:
&&下载次数: 87
&&提 供 者:
&详细说明:这是FreeRTOS移植到STM32F0系列单片机的实例,已经验证成功,成功的驱动了LED,24L01,SPI,ADC等等外设。源码已经测试通过无误。-This is FreeRTOS transplanted to STM32F0 MCU instance, has been verified successfully, the success of driven LED, 24L01, SPI, ADC and so on peripherals. Source code has been tested correctly.
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&BUTTERFLY遥控-FreeRTOS\.project&&......................\CORE\core_cm0.h&&......................\....\startup_stm32f030.s&&......................\Driver\delay.c&&......................\......\delay.h&&......................\......\drv_adc.c&&......................\......\drv_adc.h&&......................\......\Led.c&&......................\......\Led.h&&......................\......\main.c&&......................\......\main.h&&......................\......\NRF24L01.C&&......................\......\NRF24L01.h&&......................\......\SPI.c&&......................\......\SPI.h&&......................\......\stm32f0xx_conf.h&&......................\......\stm32f0xx_it.c&&......................\......\stm32f0xx_it.h&&......................\......\system_stm32f0xx.c&&......................\JLinkLog.txt&&......................\JLinkSettings.ini&&......................\List\startup_stm32f030.lst&&......................\....\startup_stm32f042.lst&&......................\....\STM32F042-SWITCHV10.map&&......................\mylib\sysconfig.h&&......................\Obj\croutine.crf&&......................\...\croutine.d&&......................\...\croutine.o&&......................\...\delay.crf&&......................\...\delay.d&&......................\...\delay.o&&......................\...\drv_adc.crf&&......................\...\drv_adc.d&&......................\...\drv_adc.o&&......................\...\heap_2.crf&&......................\...\heap_2.d&&......................\...\heap_2.o&&......................\...\led.crf&&......................\...\led.d&&......................\...\led.o&&......................\...\list.crf&&......................\...\list.d&&......................\...\list.o&&......................\...\main.crf&&......................\...\main.d&&......................\...\main.o&&......................\...\nrf24l01.crf&&......................\...\nrf24l01.d&&......................\...\nrf24l01.o&&......................\...\port.crf&&......................\...\port.d&&......................\...\port.o&&......................\...\queue.crf&&......................\...\queue.d&&......................\...\queue.o&&......................\...\spi.crf&&......................\...\spi.d&&......................\...\spi.o&&......................\...\startup_stm32f030.d&&......................\...\startup_stm32f030.o&&......................\...\STM32F042-FreeRTOS_BUTTERFLY_RemoteControl.dep&&......................\...\STM32F042-SWITCHV10.axf&&......................\...\STM32F042-SWITCHV10.build_log.htm&&......................\...\STM32F042-SWITCHV10.hex&&......................\...\STM32F042-SWITCHV10.htm&&......................\...\STM32F042-SWITCHV10.lnp&&......................\...\STM32F042-SWITCHV10.sct&&......................\...\stm32f0xx_adc.crf&&......................\...\stm32f0xx_adc.d&&......................\...\stm32f0xx_adc.o&&......................\...\stm32f0xx_can.crf&&......................\...\stm32f0xx_can.d&&......................\...\stm32f0xx_can.o&&......................\...\stm32f0xx_exti.crf&&......................\...\stm32f0xx_exti.d&&......................\...\stm32f0xx_exti.o&&......................\...\stm32f0xx_flash.crf&&......................\...\stm32f0xx_flash.d&&......................\...\stm32f0xx_flash.o&&......................\...\stm32f0xx_gpio.crf&&......................\...\stm32f0xx_gpio.d&&......................\...\stm32f0xx_gpio.o&&......................\...\stm32f0xx_i2c.crf&&......................\...\stm32f0xx_i2c.d&&......................\...\stm32f0xx_i2c.o&&......................\...\stm32f0xx_it.crf&&......................\...\stm32f0xx_it.d&&......................\...\stm32f0xx_it.o&&......................\...\stm32f0xx_iwdg.crf&&......................\...\stm32f0xx_iwdg.d&&......................\...\stm32f0xx_iwdg.o&&......................\...\stm32f0xx_misc.crf&&......................\...\stm32f0xx_misc.d&&......................\...\stm32f0xx_misc.o&&......................\...\stm32f0xx_pwr.crf&&......................\...\stm32f0xx_pwr.d&&......................\...\stm32f0xx_pwr.o&&......................\...\stm32f0xx_rcc.crf&&......................\...\stm32f0xx_rcc.d&&......................\...\stm32f0xx_rcc.o
&[]:很好,推荐下载&[]:很好,推荐下载&[]:纯粹是垃圾&[]:很好,推荐下载
&近期下载过的用户:
&&&&&&&&&&&&&&&&&&&&&[]
&输入关键字,在本站271万海量源码库中尽情搜索:
&[] - 神州III号STM32F10X系列学习实验板3.2寸TFT触摸屏学习程序
&[] - 在stm32的cpu上移植freertos操作系统,程序在freertos基础上实现了,按键扫描,led灯控制,串口收发处理,定时器中断程序等功能。使用MDK打开工程文件即可。
&[] - freertos移植到stm32f0518,iar环境
&[] - STM32 FreeRTOS v5.2移植源代码,包括一个LED任务,驱动4个LED轮次闪烁,本源代码适合Keil MDK 3.4/3.5/uv4工具,适合STM三合一开发板
&[] - STM8实现驱动HT1621点亮段式LCD屏幕的程序
&[] - STM8
HT1621驱动程序
方便移植的
&[] - 电动汽车充电标准2015版
扫描版本 电动汽车传导充电用连接装置第3部分:直流充电接口
&[] - 本工程为著名开源飞控autoquad的Keil工程,大家可以下载下来,直接用Keil 5.2编译通过。
&[] - tb上买的关于STM32通过PID做温度控制的软件和硬件资料。
&[] - oled的显示驱动程序,都是自己写的,可以移植到51,avr stm8都可以使用,基于STM32的实时操作系统(RTOS) 应用实战和软件架构分享
上海市上海ST办公室或者其他届时指定场所
不限参加人数
基于STM32的实时操作系统(RTOS) 应用实战和软件架构分享
上海市上海ST办公室或者其他届时指定场所
不限参加人数
上海 STM32针对实时操作系统(RTOS)应用实战分享我们的课程主要基于STM32的热点应用进行实战培训,同时辅以介绍STM32最新产品线。培训将在ST办公室或者其他指定地点举行,通常持续1天。请携带笔记本电脑并预先安装好相关编译环境。我们提供的所有培训课程都是免费的,除此之外还会为参加培训课程的人员提供免费工作午餐,其余交通、住宿等费用自理。
你可能感兴趣
04-16 09:30
04-16- 09:30
03-31 13:00
03-31- 13:00
04-01 14:00
04-01- 14:00
04-23 09:30
04-23- 09:30
04-16 00:00
04-16- 00:00
04-16 13:00
04-16- 13:00
04-16 09:30
04-16- 09:30
04-28 08:30
04-28- 08:30
活动发布者
你可能感兴趣
04-16 09:30
04-16- 09:30
03-31 13:00
03-31- 13:00
04-01 14:00
04-01- 14:00
04-23 09:30
04-23- 09:30
04-16 00:00
04-16- 00:00
04-16 13:00
04-16- 13:00
04-16 09:30
04-16- 09:30
04-28 08:30
04-28- 08:30
长按识别二维码关注硬来微信获取电子票在STM32中移植FreeRTOS(纯净版)_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
在STM32中移植FreeRTOS(纯净版)
&&在stm32中移植freertos详细文档
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩5页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 车尾灯实际产品规格表 的文章

 

随机推荐