问答

汇集网友智慧,解决技术难题

21ic问答首页 - TAG - EE
  • 进入深度睡眠唤醒后程序会重新运行 sos

    MCU 型号: HC32L170JATA 问题:程序通过[color=#cccccc][backcolor=rgb(31, 31, 31)][font=Consolas, "] [/font][/backcolor][/color][color=rgb(220, 220, 170)][backcolor=rgb(31, 31, 31)][font=Consolas, "]Lpm_GotoDeepSleep[/font][/backcolor][/color][color=#cccccc][backcolor=rgb(31, 31, 31)][font=Consolas, "]([/font][/backcolor][/color][color=rgb(86, 156, 214)][backcolor=rgb(31, 31, 31)][font=Consolas, "]FALSE[/font][/backcolor][/color][color=#cccccc][backcolor=rgb(31, 31, 31)][font=Consolas, "])[/font][/backcolor][/color]进入深度休眠,通过低功耗定时器 LpTim0 唤醒,但是唤醒后程序会重新运行,大家有遇到过这个情况吗,可能是什么原因造成的。具体代码如下。 [color=#cccccc][backcolor=rgb(31, 31, 31)][font=Consolas, "][color=#6a9955]/******************************************************************************[/color] [color=#6a9955] ** [/color][color=#569cd6]\brief[/color][color=#6a9955] 深度休眠处理函数[/color] [color=#6a9955] ** [/color] [color=#6a9955] ** [/color][color=#569cd6]@param[/color][color=#6a9955] [/color][color=#9cdcfe]无[/color] [color=#6a9955] ** [/color][color=#569cd6]\retval[/color][color=#6a9955] 无[/color] [color=#6a9955] **[/color] [color=#6a9955]******************************************************************************/[/color] [color=#569cd6]void[/color] [color=#dcdcaa]app_deep_sleep_handle_func[/color]([color=#569cd6]void[/color]) { [color=#c586c0]if[/color]([color=#9cdcfe]s_wakeup_status[/color].[color=#9cdcfe]enter_sleep_en[/color] [color=#d4d4d4]!=[/color] [color=#4fc1ff]SLEEP_EN[/color]) { [color=#c586c0]return[/color]; } [color=#6a9955] /*休眠参数配置*/[/color] [color=#9cdcfe]s_wakeup_status[/color].[color=#9cdcfe]enter_sleep_en[/color] [color=#d4d4d4]=[/color] [color=#4fc1ff]SLEEP_DEFAULT[/color]; [color=#dcdcaa]App_LPTimerInit[/color](); [color=#dcdcaa]Lptim_Cmd[/color]([color=#569cd6]M0P_LPTIMER0[/color], [color=#569cd6]TRUE[/color]);[color=#6a9955] //LPT 运行[/color] [color=#6a9955] /*IO休眠状态配置*/[/color] [color=#dcdcaa]App_LowPowerModeGpioSet[/color](); [color=#dcdcaa]app_sleep_gpio_release[/color](); [color=#dcdcaa]app_sleep_uart_release[/color](); [color=#dcdcaa]app_sleep_adc_release[/color](); [color=#6a9955]//进入深度睡眠模式[/color] [color=#dcdcaa]Lpm_GotoDeepSleep[/color]([color=#569cd6]FALSE[/color]); [color=#c586c0]while[/color] ([color=#b5cea8]1[/color]) { [color=#c586c0]if[/color]([color=#9cdcfe]s_wakeup_status[/color].[color=#9cdcfe]wakeup_reason[/color] [color=#d4d4d4]!=[/color] [color=#4fc1ff]WAKEUP_REASON_DEFAULT[/color]) { [color=#c586c0]break[/color]; } } } [color=#6a9955]/**[/color] [color=#6a9955] ******************************************************************************[/color] [color=#6a9955] ** [/color][color=#569cd6]\brief[/color][color=#6a9955] LPTIMER中断服务函数[/color] [color=#6a9955] **[/color] [color=#6a9955] ** [/color][color=#569cd6]\return[/color][color=#6a9955] 无[/color] [color=#6a9955] ******************************************************************************/[/color] [color=#569cd6]void[/color] [color=#dcdcaa]LpTim0_IRQHandler[/color]([color=#569cd6]void[/color]) { [color=#c586c0]if[/color] ([color=#569cd6]TRUE[/color] [color=#d4d4d4]==[/color] [color=#dcdcaa]Lptim_GetItStatus[/color]([color=#569cd6]M0P_LPTIMER0[/color])) { [color=#6a9955]// Gpio_WriteOutputIO(LORA_POWER_EN_PORT,LORA_POWER_EN_PIN,TRUE);[/color] [color=#9cdcfe]s_wakeup_status[/color].[color=#9cdcfe]wakeup_reason[/color] [color=#d4d4d4]=[/color] [color=#4fc1ff]WAKEUP_TIMER[/color]; [color=#6a9955]//s_wakeup_status.enter_sleep_en = SLEEP_EN;[/color] [color=#dcdcaa]Lptim_ClrItStatus[/color]([color=#569cd6]M0P_LPTIMER0[/color]);[color=#6a9955]//清除LPTimer的中断标志位[/color] } } [/font][/backcolor][/color]

    小华 低功耗 MCU 单片机 运行 EE

    1741浏览量 0回复量 关注量
  • 软件模式spi的无法更改通讯速率 赏3000家园币

    使用芯片为stm32mp157,目前尝试更改设备树文件中spi-max-frequency参数,以及在用户空间程序中使用(ioctl(fd, SPI_IOC_WR_MAX_SPEED_HZ, &speed_hz)进行spi通讯速度的修改。无论将频率调高或调低,都未能生效。目前时钟频率被固定在125kHz,请问要如何才能调整这个软件模式spi的时钟频率?设备树节点定义如下 gpio_spi_drv_dac: spi[url=home.php?mod=space&uid=2514798]@1[/url] { compatible = "spi-gpio"; #address-cells = <1>; #size-cells = <0>; status = "okay"; sck-gpios = <&gpiod 8 0>; mosi-gpios = <&gpioh 15 0>; miso-gpios = <&gpioi 4 0>; cs-gpios = <&gpioi 0 0>; num-chipselects = <1>; /* Clients */ spidev[url=home.php?mod=space&uid=2514928]@0[/url] { reg = <0>; compatible = "linux,spidev"; spi-max-frequency = <500000>; }; }; 用户空间程序中配置spi速率函数如下: int set_spi_speed(int fd, unsigned int speed_hz) { if (ioctl(fd, SPI_IOC_WR_MAX_SPEED_HZ, &speed_hz) < 0) { perror("Failed to set SPI speed"); return errno; } return 0; }

    软件 通讯 spi IO speed EE

    3294浏览量 1回复量 关注量
  • CH582F RF 问题

    我想要移植Nimble到CH582上,但是Freertos的例程里面说ble不建议和freertos共存。我想要单独使用不跑循环的RF相关接口,请问有没有相关教程或者方法?

    单片机 BLE RF CH582 EE RT

    5335浏览量 11回复量 关注量
  • HC32l136低功耗相关配置 sos

    在应用中调用库函数:Lpm_GotoDeepSleep()函数,然后其他程序中配置有lptim做1S定时器使用,该定时器会唤醒mcu嘛,同时他在mcu休眠时是否还会计数? /** ***************************************************************************** ** \brief 进入深度睡眠模式 ** ** \input bOnExit - TRUE:当退出异常处理后,自动再次进入休眠; ** FALSE:唤醒后不再自动进入休眠 ** ** \retval NULL *****************************************************************************/ void Lpm_GotoDeepSleep(boolean_t bOnExit) { SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk; SCB->SCR |= 1u<

    SC EE 低功耗 hc32l136 国产芯片 MUC

    1264浏览量 0回复量 关注量
  • 国民技术n32g031睡眠模式无法唤醒

    求问:n32g031单片机使用PWR_EnterSLEEPMode(SLEEP_ON_EXIT, PWR_SLEEPENTRY_WFI)进入睡眠模式后无法触发按键外部中断,以至于无法唤醒芯片继续运行。如果把此函数放在while(1)里面就可以,外边就不行!大家有遇到这个问题的吗~~~

    EE 技术 N32G031 单片机 嵌入式 国产芯片

    2171浏览量 6回复量 关注量
  • 微芯单片机中的问题 sos

    make: *** No rule to make target 'make', needed by '.build-impl'. Stop.MPLAB 中出现这种问题应该如何解决,请教各位大佬

    RUL EE ma 微芯 单片机 mircochip

    1833浏览量 0回复量 关注量