导航

    Freqchip开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 最新
    1. 主页
    2. uplooking
    U
    • 继续与 uplooking 聊天
    • 开始与 uplooking 的新会话
    • 举报资料
    • 资料
    • 关注
    • 粉丝
    • 屏蔽
    • 主题
    • 帖子
    • 最佳
    • 群组

    uplooking

    @uplooking

    0
    声望
    17
    帖子
    450
    资料浏览
    0
    粉丝
    1
    关注
    注册时间 最后登录

    uplooking 关注

    uplooking 发布的帖子

    • 关于低功耗问题咨询

      请问一下,我现在的软件逻辑是长按按钮开机,调用system_sleep_disable退出低功耗模式,长按按钮关机,调用system_sleep_enable进入低功耗模式。这样频繁的进入和退出低功耗模式,会影响蓝牙广播和连接吗?

      发布在 FR801xH
      U
      uplooking
    • RE: 寻求低功耗例程

      代码如下:

      __attribute__((section("ram_code"))) void pmu_gpio_isr_ram(void)
      {
          uint32_t gpio_value = ool_read32(PMU_REG_GPIOA_V);
      
          // PB5
          if (gpio_value & GPIO_PB5)
          {
          
              co_printf("%s  gpio_value: %x\r\n", __func__, gpio_value);
          }
          else
          {
              button_toggle_detected(gpio_value);
          }
          
          // co_printf(" %s gpio_value: %x\r\n", __func__, gpio_value);
      
          ool_write32(PMU_REG_PORTA_LAST, gpio_value);
      }
      
      
      
      void user_key_init(void)
      {
          // 设置上拉 PD7 按键
          pmu_set_pin_pull(KEY_GPIO_PORT, (1 << KEY_GPIO_BIT), true);
      
          // PB5 外部中断引脚
          pmu_set_pin_pull(GPIO_PORT_B, (1 << GPIO_BIT_5), true);
      
          // PD7 PB5
          pmu_port_wakeup_func_set(KEY_GPIO | GPIO_PB5);
      
          button_init(KEY_GPIO);
      }
      
      

      问题如下:现在有PB5和PD7都设置中断唤醒,在中断处理函数pmu_gpio_isr_ram中如何区分是PD7引脚的中断,还是PB5的中断呢?

      发布在 FR801xH
      U
      uplooking
    • RE: 寻求低功耗例程

      中断处理函数 PD7和PB5

      __attribute__((section("ram_code"))) void pmu_gpio_isr_ram(void)
      {
          uint32_t gpio_value = ool_read32(PMU_REG_GPIOA_V);
      
          button_toggle_detected(gpio_value);
      
          co_printf(" %s gpio_value: %x\r\n", __func__, gpio_value);
      
          ool_write32(PMU_REG_PORTA_LAST, gpio_value);
      }
      

      按下Key(PD7),运行结果如下:

      pmu_gpio_isr_ram gpio_value: 5080a03c
      pmu_gpio_isr_ram gpio_value: d080a03c
      pmu_gpio_isr_ram gpio_value: 5080a03c
      pmu_gpio_isr_ram gpio_value: d080a03c
      pmu_gpio_isr_ram gpio_value: 5080a03c
      pmu_gpio_isr_ram gpio_value: d080a03c
      pmu_gpio_isr_ram gpio_value: 5080a03c
      pmu_gpio_isr_ram gpio_value: d080a03c
      pmu_gpio_isr_ram gpio_value: 5080a03c
      pmu_gpio_isr_ram gpio_value: d080a03c
      pmu_gpio_isr_ram gpio_value: 5080a03c
      pmu_gpio_isr_ram gpio_value: d080a03c
      pmu_gpio_isr_ram gpio_value: 5080a03c
      pmu_gpio_isr_ram gpio_value: d080a03c
      pmu_gpio_isr_ram gpio_value: 5080a03c
      pmu_gpio_isr_ram gpio_value: d080a03c
      pmu_gpio_isr_ram gpio_value: 5080a03c
      pmu_gpio_isr_ram gpio_value: d080a03c
      pmu_gpio_isr_ram gpio_value: 5080a03c
      pmu_gpio_isr_ram gpio_value: d080a03c
      pmu_gpio_isr_ram gpio_value: 5080a03c
      pmu_gpio_isr_ram gpio_value: d080a03c
      pmu_gpio_isr_ram gpio_value: 5080a03c
      pmu_gpio_isr_ram gpio_value: d080a03c
      pmu_gpio_isr_ram gpio_value: 5080a03c
      pmu_gpio_isr_ram gpio_value: d080a03c
      pmu_gpio_isr_ram gpio_value: 4000a03c
      pmu_gpio_isr_ram gpio_value: c000a03c
      pmu_gpio_isr_ram gpio_value: 4000a03c
      pmu_gpio_isr_ram gpio_value: c000a03c
      pmu_gpio_isr_ram gpio_value: 5000a03c
      pmu_gpio_isr_ram gpio_value: c000a03c
      pmu_gpio_isr_ram gpio_value: 4000a03c
      pmu_gpio_isr_ram gpio_value: c000a03c
      pmu_gpio_isr_ram gpio_value: 4000a03c
      pmu_gpio_isr_ram gpio_value: d080a03c
      pmu_gpio_isr_ram gpio_value: 4000a03c
      pmu_gpio_isr_ram gpio_value: c000a03c

      
      请问一下,为啥同一个按键按下和抬起输出的值不一样?
      发布在 FR801xH
      U
      uplooking
    • flash_protect_enable问题
      /*********************************************************************
       * @fn      flash_protect_enable
       *
       * @brief   protect flash chip from erase and write.
       *
       * @param   wr_mode     - 0: write.enable with command 0x50
       *                        1: write enable with command 0x06
       *
       * @return  None.
       */
      __attribute__((section("ram_code"))) void flash_protect_enable(uint8_t wr_mode);
      
      /*********************************************************************
       * @fn      flash_protect_enable1
       *
       * @brief   protect flash chip from erase and write.
       *
       * @param   wr_mode     - 0: write.enable with command 0x50
       *                        1: write enable with command 0x06
       *          mask        protect bits mask, refer to flash spec
       *
       * @return  None.
       */
      __attribute__((section("ram_code"))) void flash_protect_enable1(uint8_t wr_mode,uint8_t mask);
      
      /*********************************************************************
       * @fn      flash_protect_disable
       *
       * @brief   remove protection flash chip from erase and write.
       *
       * @param   wr_mode     - 0: write.enable with command 0x50
       *                        1: write enable with command 0x06
       *
       * @return  None.
       */
      __attribute__((section("ram_code"))) void flash_protect_disable(uint8_t wr_mode);
      
      
      
      

      flash_protect_enable和flash_protect_enable1有什么区别吗?

      发布在 FR801xH
      U
      uplooking
    • RE: co_delay_100us(10);延时函数在哪个头文件里

      sys_utils.h

      发布在 FR800x
      U
      uplooking
    • RE: 寻求低功耗例程
      __attribute__((section("ram_code"))) void pmu_gpio_isr_ram(void)
      {
          uint32_t gpio_value = ool_read32(PMU_REG_GPIOA_V);
      
          co_printf("gpio_value: %X\r\n", gpio_value);
      
          ool_write32(PMU_REG_PORTA_LAST, gpio_value);
      }
      

      这个PMU中GPIO中断处理函数,可以区分哪一个GPIO吗? 比如我设置PA0,PA1都可以唤醒深度睡眠,如何区分是哪一个IO口触发的中断?

      发布在 FR801xH
      U
      uplooking
    • RE: 寻求低功耗例程

      @ZR
      设置下降沿触发中断唤醒有提供API吗?

      发布在 FR801xH
      U
      uplooking
    • RE: 寻求低功耗例程

      设置按键唤醒,可以设置为下降沿产生中断吗?

          pmu_set_pin_pull(GPIO_PORT_C, (1 << GPIO_BIT_5), true);
          pmu_port_wakeup_func_set(GPIO_PC5);
      

      上述代码是按键按下和抬起都会产生中断。

      发布在 FR801xH
      U
      uplooking
    • RE: 关于FR801xH修改Mac地址失败的问题

      Mac地址可以烧录到Flash里面吗?MCU后面每次重启的时候是Flash中的Mac地址。

      发布在 FR801xH
      U
      uplooking