杰理AD14N/AD15N---休眠和关机唤醒问题

本文针对杰理JLAD系列芯片在修改AD按键引脚后无法唤醒的问题,详细介绍了SDK用户手册中关于休眠和关机配置的方法,并给出了具体的代码修改方案。

杰理JL AD150N、AD153A2、AD153A4、AD156A2、AD158A2、AD159A2、AD142A2、AD145A2、AD146A2.

目前的SDK如果不是使用默认配置的PA0引脚做开关机按键,修改了AD按键引脚,则关机后再也唤不醒了,怎么配置?

其实SDK用户手册中有介绍:

在SDK目录下的DOC文档中可以找到休眠和关机(power down和soft off)的介绍和配置方法,但是当我修改了唤醒IO口以后,发现无法唤醒:

于是跟进关机流程的代码,发现不管是power down还是soft off,都会调用close_gpio()这个函数,函数前面已经可以发现端倪:

代码默认的AD KEY按键用的就是PA0这个引脚,我改到PA5了,所以这里也是需要修改的,否则的话这里的代码会把这个PA的所有GPIO都配置成高阻态,那么就永远无法通过配置的的唤醒GPIO唤醒芯片了。

软件配置PA5唤醒,gpio_close函数配置如下,则问题解决:

 

杰里相关产品在定时中断方面有不同的定时器类型,原理使用方法也有所不同。 ### 定时器中断原理 - **硬件定时器触发**:硬件定时器产生中断,触发相关线程操作。如 High - precision Timer 线程因硬件定时器中断,对延时时间到的线程进行 resume,不过在相关原理图示中,考虑到“可重入”问题,未添加“硬件定时器”列 [^2]。 - **线程时基提供**:sys_timer 由 systimer 线程提供时基,当 systimer 线程中的定时时基到达,会发出事件通知对应的 add 线程执行回调函数 [^3]。 ### 定时器中断使用方法 - **定时器中断函数编写**:以定时器 1 为例,可编写定时器中断函数,实现 125μS 中断一次的功能。在中断函数中,可进行计数、控制端口开关等操作。以下是示例代码: ```c void timer1_interrupt() ///125uS中断一次 { ///os_time_dly(1000);//延时函数 //timer_ctrl(timer1_hl,TIMER_CMD_SET_CNT,0,NULL); time1_test_flag++; if(time1_test_flag == 8) ///假设中断时间是125微妙,那么加8次就等于1毫秒 { time1_test_flag = 0; TEST1_PORT_ON(); //printf("SYS_CLK:%d",clock_get_sys_freq()); //printf("1\r\n"); } else { TEST1_PORT_OFF(); // printf("2222222\r\n"); } //printf("time1_test_flag:%d\r\n",time1_test_flag); } ``` - **sys_timer 使用**:sys_timer 适用于某些不能在中断里面执行且定时间隔较长的定时任务,使用时在某个线程中进行 add 操作(如 sys_timer_add),当定时时基到了,systimer 线程会发出事件通知该线程执行回调函数 [^3]。 ### 相关资料 引用内容中涉及杰理定时器的部分资料,如杰理 AC690X 定时器中断时间配置、sys_timer 与 usr_timer 定时器相关内容,可作为进一步了解的参考 [^1][^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jim天河

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值