实验目的:
使一个LED长亮,一个LED闪烁
实验原理:
(1)GPIOE 寄存器:
(2)设置GPIOE的CONFIG寄存器,实现GPIOE与普通GPIO绑定
实验代码:
(1)配置
1 void GPIOTE_TASK_Init(void) 2 { 3 4 NVIC_EnableIRQ(GPIOTE_IRQn);//中断嵌套设置 5 6 NRF_GPIOTE->CONFIG[0] = (GPIOTE_CONFIG_POLARITY_Toggle << GPIOTE_CONFIG_POLARITY_Pos)//极性设置 任务模式下翻转电平 7 | (19 << GPIOTE_CONFIG_PSEL_Pos) //管脚设置 8 | (GPIOTE_CONFIG_MODE_Task << GPIOTE_CONFIG_MODE_Pos) 9 | (GPIOTE_CONFIG_OUTINIT_High << GPIOTE_CONFIG_OUTINIT_Pos);//初始化为高电平 10 11 NRF_GPIOTE->CONFIG[1] = (GPIOTE_CONFIG_POLARITY_HiToLo << GPIOTE_CONFIG_POLARITY_Pos)//任务模式下输出低电平 配置任务输出状态 12 | (20<< GPIOTE_CONFIG_PSEL_Pos) //绑定通道 13 | (GPIOTE_CONFIG_MODE_Task << GPIOTE_CONFIG_MODE_Pos)//配置为任务模式 14 | (GPIOTE_CONFIG_OUTINIT_High << GPIOTE_CONFIG_OUTINIT_Pos);//初始化为高电平 15 16 }
(2)main
1 int main(void) 2 { 5 GPIOTE_TASK_Init(); 6 while(1) 7 { 8 //触发输出任务模式 9 // NRF_GPIOTE->TASKS_SET[0]=1;//引脚电平状态设置为高电平 10 // NRF_GPIOTE->TASKS_SET[1]=1; 11 // 12 // NRF_GPIOTE->TASKS_CLR[0]=1;//引脚电平状态设置为低电平 13 // NRF_GPIOTE->TASKS_CLR[1]=1; 14 15 NRF_GPIOTE->TASKS_OUT[0]=1;//引脚电平状态根据GPIOTE_CONFIG_POLARITY_Pos设置的变化 16 NRF_GPIOTE->TASKS_OUT[1]=1; 17 18 nrf_delay_ms(500); 19 } 20 }
实验现象:
https://www.bilibili.com/video/BV17i4y1L7eE