问题描述
我正在使用ARM Cortex M3处理器进入睡眠模式。我必须为此填充一些结构。
这里是其中之一
struct sleep_mode_init_env_tag
{
/* Wake up configuration */
uint32_t wakeup_cfg;
/* Wake up restore address */
uint32_t wakeup_addr;
/* Wake up application start address */
uint32_t app_addr;
/* Memory power configuration for wake-up */
uint32_t mem_power_cfg_wakeup;
/* Clock source for RTC */
uint8_t rtc_ctrl;
/* DMA channel used to save/restore RF registers
* in each sleep/wake-up cycle */
uint8_t DMA_channel_RF;
};
当ı在主循环中进入睡眠模式时,ı要在1分钟后再次返回主循环。因此,您可以看到ı必须在此处写入唤醒功能的内存地址;
uint32_t app_addr;
还有我的返回函数;
void Turn_Wake_up(void) {
Sys_PowerModes_Wakeup();
Sys_Watchdog_Refresh();
Device_Config();
memory_access();
main_loop();
}
制造商公司创建了此.S文件(wake_up.S),并包含在项目中以作为唤醒功能的内存地址;
.thumb_func
.section .app_wakeup_asm
.globl Turn_Wake_up_asm
.extern __stack,4
/* ----------------------------------------------------------------------------
* Function : void Turn_Wake_up_asm()
* ----------------------------------------------------------------------------
* Description : Initialize stack pointer and continue execution
* Inputs : None
* Outputs : None
* Assumptions : None
* ------------------------------------------------------------------------- */
Turn_Wake_up_asm:
movw r0,#:lower16:__stack
movt r0,#:upper16:__stack
msr msp,r0
/* ----------------------------------------------------------------------------
* File end
* ------------------------------------------------------------------------- */
.end
他们已经做到了;
(uint32_t) (&Turn_Wake_up_asm)
所以,我只用了这个
(uint32_t) (&Turn_Wake_up);
并且ı没有任何错误,但是没有用。所以我的主要问题是;
“(uint32_t)(&Turn_Wake_up);和(uint32_t)(&Turn_Wake_up_asm)有什么区别?”
请注意:
***我没有任何有关.S文件内容的信息...
谢谢...
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)