NRF52832开发:GPIO驱动
来源:互联网 发布:艾德思奇调价软件 编辑:程序博客网 时间:2024/05/17 03:33
NRF52832开发:GPIO驱动
本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.
环境:
开发环境:MDK5.23
说明:
参考Nordic公司经提供了芯片NRF52832的开发包,重新编写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 <stdint.h>#include <stdbool.h>/**********************************************************************数据结构**********************************************************************//*** @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);}
阅读全文
0 0
- NRF52832开发:GPIO驱动
- nRF52832 GPIO
- NRF52832开发:普通串口驱动
- nrf52832 之 gpio配置方法
- 南桥下GPIO驱动开发。
- gpio驱动开发第一天
- nrf52832 --- nfc脚做GPIO口
- nrf52832 --- Reset脚做GPIO口
- nrf52832开发环境安装
- GPIO键盘驱动开发进程-1
- SmartARM2200开发板GPIO驱动学习心得
- 驱动程序开发--AT91SAM9260的GPIO驱动笔记
- ZedBoard Linux开发 --- GPIO驱动详解
- 驱动程序开发--AT91SAM9260的GPIO驱动笔记
- ZedBoard Linux开发 --- GPIO驱动详解
- ZedBoard Linux开发 --- GPIO驱动详解
- Linux驱动开发---gpio和gpiod
- nRF52832
- 警告: A docBase E:/Tomcat/webapps/Test inside the host appBase has been specified, and will be ignored
- 封装 UnityEngine.Debug.Log 为Dll
- dubbo-3 使用maven构建dubbo可执行jar包
- 1047. 编程团体赛(20)
- 给seo外链员的一些忠告
- NRF52832开发:GPIO驱动
- 银行企业建设容器持久化存储的必要性以及难点剖析
- Mysql分区
- java实现amr转mp3
- 《Edge Boxes: Locating Object Proposals from Edges》读后感
- 阿里巴巴数据库连接池Druid
- 深度学习的概念
- android根据日期计算年龄
- 仿即刻点赞文字部分的自定义View