nrf52832使用freeRTOS低功耗模式的笔记

一般而言,RTOS的运转需要一个滴答定时器周期性地产生中断来为系统提供时钟,通常是1毫秒或者10毫秒。

对于低功耗应用场景,定时器会频繁地产生中断,使得MCU频繁被唤醒,导致功耗升高,无法满足项目需求。

freeRTOS中引入了TICKLESS模式来实现低功耗应用。

TICKLESS模式的原理是动态地改变系统时钟的中断频率,当没有任务运行时,保持MCU处于睡眠模式,减少不必要的时钟中断。

 

nordic nrf52832的SDK中提供了freeRTOS的低功耗应用实例,阅读源码后做一些笔记:

在freeRTOS中全局变量[xNextTaskUnblockTime]记录着下一个任务唤醒的时间,[xTickCount]记录着当前系统时间,

当系统处于空闲任务时,使用[xNextTaskUnblockTime - xTickCount]计算出MCU可以睡眠的时长,

将计算结果传给portSUPPRESS_TICKS_AND_SLEEP函数,这个函数在port_cmsis_systick.c中实现,

该函数修改RTC的中断模式,然后使用WFE的方式让MCU进入睡眠模式,当MCU被事件唤醒之后,恢复RTC中断为之前的状态。

备注:WFE方式的唤醒方式可以是SEV指令,也可以是任意中断事件,使用中断唤醒需要提前设置SEVONPEND位。

SDK的代码中在port_cmsis.c使用了SCB->SCR |= SCB_SCR_SEVONPEND_Msk;

 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
nrf52832是一款低功耗蓝牙SoC,它可以用于许多物联网应用中,包括温湿度传感器。您可以使用nrf52832与温湿度传感器进行通信,并使用低功耗模式来延长电池寿命。以下是实现这一目标的一些步骤: 1.选择适当的温湿度传感器:您可以选择市场上可用的多个温湿度传感器之一,并根据您的需求选择适当的传感器。一些常用的温湿度传感器包括DHT11,DHT22等。 2.将传感器连接到nrf52832:您可以使用I2C,SPI或GPIO等接口将温湿度传感器连接到nrf52832。您需要了解传感器的数据格式,并相应地配置nrf52832的GPIO,以便正确读取传感器数据。 3.编写代码以读取传感器数据:您可以使用nrf52832的软件开发工具包(SDK)中提供的库函数来读取传感器数据。您需要编写代码来解析传感器数据,并将其存储在nrf52832的内存中。 4.使用低功耗模式nrf52832具有多种低功耗模式,您可以使用这些模式来延长电池寿命。您可以使用nrf52832的RTC(实时时钟)来定期唤醒芯片并读取传感器数据,然后将芯片放回低功耗模式。 5.将数据发送到云端:最后,您可以使用nrf52832的蓝牙功能将数据传输到云端。您可以使用MQTT或HTTP等协议将数据发送到云端,并进行后续处理和分析。 总之,使用nrf52832与温湿度传感器结合,可以轻松实现低功耗的温湿度检测,并将数据传输到云端进行处理和分析。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值