NRF 52832 개발: GPIO 구동
3883 단어 일 렉 트 로 닉 스
본문 블 로그 링크:http://blog.csdn.net/jdh99, 저자: jdh, 전재 설명 하 세 요.
환경:
개발 환경: MDK 5.23
설명:
Nordic 사 경 을 참고 하여 칩 NRF 52832 의 개발 패 키 지 를 제공 하여 GPIO 구동 을 재 작성 하 였 습 니 다.
원본 코드:
drv_gpio.h
/**
* Copyright (c), 2015-2025
* @file drv_gpio.h
* @brief gpio
* @author jdh
* @date 2017/6/27
*/
#ifndef _DRV_GPIO_H_
#define _DRV_GPIO_H_
/*********************************************************************
*
**********************************************************************/
#include
#include
/*********************************************************************
*
**********************************************************************/
/**
* @brief
*/
typedef enum
{
GPIO_NOPULL = 0,
GPIO_PULLDOWN = 1,
GPIO_PULLUP = 3
} GPIO_Pull_Mode;
/*********************************************************************
*
**********************************************************************/
/**
* @brief
* @param pin:
*/
void drv_gpio_config_output(uint8_t pin);
/**
* @brief
* @param pin:
* @param pull_mode:
*/
void drv_gpio_config_input(uint8_t pin, GPIO_Pull_Mode pull_mode);
/**
* @brief
* @param pin:
*/
void drv_gpio_set_high(uint8_t pin);
/**
* @brief
* @param pin:
*/
void drv_gpio_set_low(uint8_t pin);
/**
* @brief GPIO
* @param pin:
*/
void drv_gpio_toggle(uint8_t pin);
/**
* @brief
* @param pin:
# @retval true: .false:
*/
bool drv_gpio_read(uint8_t pin);
#endif
drv_gpio.c
/**
* Copyright (c), 2015-2025
* @file drv_gpio.c
* @brief gpio
* @author jdh
* @date 2017/6/27
* @update 2017/8/21
*/
/*********************************************************************
*
**********************************************************************/
#include "drv_gpio.h"
#include "nrf52.h"
#include "nrf52_bitfields.h"
/*********************************************************************
*
**********************************************************************/
/**
* @brief
* @param pin:
*/
void drv_gpio_config_output(uint8_t pin)
{
NRF_P0->PIN_CNF[pin] = (GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos) |
(GPIO_PIN_CNF_INPUT_Disconnect << GPIO_PIN_CNF_INPUT_Pos) |
(GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos) |
(GPIO_PIN_CNF_DRIVE_S0S1 << GPIO_PIN_CNF_DRIVE_Pos) |
(GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos);
}
/**
* @brief
* @param pin:
* @param pull_mode:
*/
void drv_gpio_config_input(uint8_t pin, GPIO_Pull_Mode pull_mode)
{
NRF_P0->PIN_CNF[pin] = (GPIO_PIN_CNF_DIR_Input << GPIO_PIN_CNF_DIR_Pos)
| (GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos)
| (pull_mode << GPIO_PIN_CNF_PULL_Pos)
| (GPIO_PIN_CNF_DRIVE_S0S1 << GPIO_PIN_CNF_DRIVE_Pos)
| (GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos);
}
/**
* @brief
* @param pin:
*/
void drv_gpio_set_high(uint8_t pin)
{
NRF_P0->OUTSET = 1 << pin;
}
/**
* @brief
* @param pin:
*/
void drv_gpio_set_low(uint8_t pin)
{
NRF_P0->OUTCLR = 1 << pin;
}
/**
* @brief GPIO
* @param pin:
*/
void drv_gpio_toggle(uint8_t pin)
{
uint32_t pins_state = NRF_P0->OUT;
NRF_P0->OUTSET = (~pins_state & (1UL << pin));
NRF_P0->OUTCLR = (pins_state & (1UL << pin));
}
/**
* @brief
* @param pin:
# @retval true: .false:
*/
bool drv_gpio_read(uint8_t pin)
{
return ((NRF_P0->IN >> pin) & 0x1);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
CVT 전자 그룹 - 필기시험 부분 시험 문제D. 분석 함수 의 역할 은 대상 의 수명 주기 가 끝 날 때 이전에 분 배 된 메모리 공간 을 회수 하 는 것 입 니 다. C \ # 에서 다음 문 구 는 Person 형식 을 Student 형식 으로 바 꾸 는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.