This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nrf52832 GPIO direct register configuration

Hello everyone, i'm currently doing a project with nrf52832 and i just came across a problem. I configured 3 pins as output, then i set 2 pins to high and 1 pin to low. But when i set that third pin to low, the other 2 pins which are currently high immediately turn to low state. Here is my code, thank you for reading.

#include "nrf.h"
#include "system_nrf52.h"
void output(int pin){
	  NRF_GPIO->PIN_CNF[pin] = (GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos) |
                                   (GPIO_PIN_CNF_DRIVE_S0S1 << GPIO_PIN_CNF_DRIVE_Pos) |
                                   (GPIO_PIN_CNF_INPUT_Disconnect << GPIO_PIN_CNF_INPUT_Pos) |
                                   (GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos) |
                                   (GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos);
}
int main(void)
{			
	output(12);
	output(18);
	output(23);
	SysTick_Config(64);
	NRF_GPIO->OUTSET |= (1<<18);
	NRF_GPIO->OUTSET |= (1<<12);
	NRF_GPIO->OUTCLR |= (1<<23);
   while(1)
   {	
   }
}

Parents Reply Children
No Data
Related