最近项目需要检测IO口下降沿信号和定时计数,于是就用到了GPIO中断和硬件定时器。有点可惜,github上面RTOS版sdk没有硬件定时器的使用方法,能够参考的只有1.5的sdk,然而我不会移植,只能班门弄斧。参考网上给的demo,实际在项目中用了发现网上给的用法很坑,有一些点需要注意,总结分享给大家,以下用法基于sdk 1.5。
1、gpio硬件中断使用
/* gpio interrupt handler */
LOCAL void gpio_interrupt_cb(void){
/*
// 不可靠的代码
_xt_isr_mask(1<<ETS_GPIO_INUM); //disable interrupt
printf(“gpio_interrupt_cb \n”);
GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS,TRUE); //clear interrupt mask
_xt_isr_unmask(1<<ETS_GPIO_INUM); //Enable the GPIO interrupt
*/
uint32 gpio_status;
gpio_status = GPIO_REG_READ(GPIO_STATUS_ADDRESS );
GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS,gpio_status);
printf(“gpio_interrupt_cb \n”);
}
void gpio_input_set(void){
GPIO_ConfigTypeDef gpio_in_cfg;
gpio_in_cf