在调试VS正常使用时,IO引脚似乎具有不同的功能:
我已经将PIN设置为高状态,但是当它出来的EXT睡眠模式时,它设置为低电平
在调试模式下不会发生这种情况
此外,调试的功耗更高 - 大约0.5mA基线
我已经设定:
sleep_state_t app_default_sleep_mode = arch_ext_sleep_on
//#定义cfg_development_debug(禁用)
从EXT-Sleep状态出来时,PIN状态是否有任何原因,以及如何在此模式下使用调试器?
设备:
嗨paulb231,
在调试模式下,设备实际上没有睡眠,但它表现得像一个,所以在睡眠模式时,在调试时应在每次唤醒时重新配置引脚,则会在禁用睡眠时发生这种情况。销钉保留了最后一个状态,但在唤醒期间,由于Periph_Init()被执行,因此将引脚重新配置为默认状态,因此您必须“记住”应用程序中的PIN的最后状态,并提供正确的配置periph_init()函数才能使PIN重新配置到它之前的状态。所以在睡眠时,即使在睡眠时,即使在调试模式下,也应该看到在每次唤醒时都会关闭LED。
谢谢mt_dialog.
Periph_Init在调试模式下调用,并且配置不会更改PIN状态
应该发生什么:
在periph_init:
SetBits16(Sys_ctrl_reg,pad_latch_en,1);
稍后在计划中:
gpio_configurepin.
gpio_setactive.
在
ARCH_TURN_PERITERALS_OFF:
setbits16(sys_ctrl_reg,pad_latch_en,0);
嗨paulb231,
对不起这是一个问题吗?如上所述,PIN保留其最后状态,并且当唤醒由于PERIPH_INIT()函数而重新配置引脚。如果您希望在睡眠模式下并保留引脚的状态,则必须在Periph_init()函数本身中的所需值中重新配置引脚。
谢谢mt_dialog.
你好
是的,它可以正常运行,只要它在启动块之前配置了:
//系统init.
setword16(clk_amba_reg,0x00);//设置时钟(HCLK和PCLK)16MHz
setword16(set_freeeze_reg,frz_wdog);//停止观看狗
SetBits16(Sys_ctrl_reg,pad_latch_en,1);//打开垫
setbits16(sys_ctrl_reg,debugger_enable,1);//打开调试器
setBits16(PMU_CTRL_REG,PERIPH_SLEEP,0);//退出外围电源
否则有一个大约6个美国的故障
嗨paul231,
在set_pad_functions()中的periph_init()应该是确定的。
谢谢mt_dialog.