【Zephyr】nRF52840线程切换,动态内存分配所占用的时间

在NRF52840上,一直有一个疑问是,别人总是说,优化代码,有的互斥锁,信号量等,等都是有代价的 ,下面可以看出,在64M主频下,进行操作系统的各项操作所占用的时间。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是nrf52840按键控制流水灯的代码实现: ```c #include <zephyr.h> #include <device.h> #include <devicetree.h> #include <drivers/gpio.h> #define LED0_NODE DT_ALIAS(led0) #define LED0 DT_GPIO_LABEL(LED0_NODE, gpios) #define PIN0 DT_GPIO_PIN(LED0_NODE, gpios) #define FLAGS0 DT_GPIO_FLAGS(LED0_NODE, gpios) #define LED1_NODE DT_ALIAS(led1) #define LED1 DT_GPIO_LABEL(LED1_NODE, gpios) #define PIN1 DT_GPIO_PIN(LED1_NODE, gpios) #define FLAGS1 DT_GPIO_FLAGS(LED1_NODE, gpios) #define SW0_NODE DT_ALIAS(sw0) #define SW0 DT_GPIO_LABEL(SW0_NODE, gpios) #define PIN_SW0 DT_GPIO_PIN(SW0_NODE, gpios) #define FLAGS_SW0 DT_GPIO_FLAGS(SW0_NODE, gpios) #define SLEEP_TIME_MS 100 void main(void) { const struct device *dev_led0; const struct device *dev_led1; const struct device *dev_sw0; bool led0_is_on = true; bool led1_is_on = false; bool sw0_is_pressed = false; dev_led0 = device_get_binding(LED0); dev_led1 = device_get_binding(LED1); dev_sw0 = device_get_binding(SW0); gpio_pin_configure(dev_led0, PIN0, GPIO_OUTPUT_ACTIVE | FLAGS0); gpio_pin_configure(dev_led1, PIN1, GPIO_OUTPUT_ACTIVE | FLAGS1); gpio_pin_configure(dev_sw0, PIN_SW0, GPIO_INPUT | FLAGS_SW0); while (1) { gpio_pin_set(dev_led0, PIN0, (int)led0_is_on); gpio_pin_set(dev_led1, PIN1, (int)led1_is_on); sw0_is_pressed = !gpio_pin_get(dev_sw0, PIN_SW0); if (sw0_is_pressed) { led0_is_on = !led0_is_on; led1_is_on = !led1_is_on; k_msleep(SLEEP_TIME_MS); } } } ``` 该代码使用了Zephyr RTOS,通过按下nrf52840开发板上的按键,可以控制两个LED灯的状态,从而实现流水灯的效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值