Darren_pty

导航

6-gpioe task 寄存器配置方式(nrf52832)

实验目的:

使一个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

 

posted on 2020-11-03 12:48  Darren_pty  阅读(314)  评论(0编辑  收藏  举报