Nordic-GPIO配置:初始化以及中断配置
来源:互联网 发布:股票历史交易数据 编辑:程序博客网 时间:2024/05/16 10:32
一、前言
继续分析Nordic GPIO部分的配置,作为芯片最基础的内容,剖析一下Nordic是如何处理GPIO配置的。
二、GPIO结构
如上图:
ANAIN/ANAEN : 模拟信号输入输出
DIR_OVERRIDE:方向过载??
IN_OVERRIDE/OUT_OVERRIDE:输入/输出过载,应该是提高驱动能力的作用
OUT就是信号输出端
DETECT:应该是用来做输入捕捉的
IN就是信号输入端
三、GPIO配置说明
1. 初始化所有IO口
for(pinLoop = 0; pinLoop< 32 ; ++pinLoop ) { NRF_GPIO->PIN_CNF[pinLoop] = (GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos) | (GPIO_PIN_CNF_DRIVE_S0S1 << GPIO_PIN_CNF_DRIVE_Pos) | (GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos) | (GPIO_PIN_CNF_INPUT_Disconnect << GPIO_PIN_CNF_INPUT_Pos) | (GPIO_PIN_CNF_DIR_Input << GPIO_PIN_CNF_DIR_Pos); }
(1)关闭Sense捕捉
(2)驱动能力设置为标准模式
(3)无上拉下拉
(4)IO口设置为输入,且输入口不连接
所有IO口的配置均按照初始化的配置方式,分别配置为输入输出
输入配置:
for (; pin_range_start <= pin_range_end; pin_range_start++) { NRF_GPIO->PIN_CNF[pin_range_start] = (GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos) | (GPIO_PIN_CNF_DRIVE_S0S1 << GPIO_PIN_CNF_DRIVE_Pos) | (GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos) | (GPIO_PIN_CNF_INPUT_Disconnect << GPIO_PIN_CNF_INPUT_Pos) | (GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos); }
输出配置:
for (; pin_range_start <= pin_range_end; pin_range_start++) { NRF_GPIO->PIN_CNF[pin_range_start] = (GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos) | (GPIO_PIN_CNF_DRIVE_S0S1 << GPIO_PIN_CNF_DRIVE_Pos) | (pull_config << GPIO_PIN_CNF_PULL_Pos) | (GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos) | (GPIO_PIN_CNF_DIR_Input << GPIO_PIN_CNF_DIR_Pos); }2. 输出口电平控制(拉高、拉低)
NRF_GPIO->OUTSET = (1UL << GPIO_LED_STATE_PIN_NUMBERNRF_GPIO->OUTCLR = (1UL << GPIO_LED_STATE_PIN_NUMBER
3. 中断配置
中断初始化步骤:(1)首先将中断入口配置为输入口(2)配置中断Line,Nordic共有4个中断Line可供使用,这里选择Line号为2,后面的配置分别设置为下降沿(High to Low)选择中断触发的IO口号,以及触发的类型EVENT就是中断(3)使能总中断和GPIOTE的2号线中断中断处理接口:中判断一下中断标志,然后清标志即可。
void EXTI_Init(uint8_t PinNum,uint8_t EXTI_Line) { nrf_gpio_cfg_input(PinNum,GPIO_PIN_CNF_PULL_Pullup); NRF_GPIOTE->CONFIG[EXTI_Line] = (GPIOTE_CONFIG_POLARITY_HiToLo<<GPIOTE_CONFIG_POLARITY_Pos) |(PinNum<<GPIOTE_CONFIG_PSEL_Pos) |(GPIOTE_CONFIG_MODE_Event<<GPIOTE_CONFIG_MODE_Pos); nrf_drv_common_irq_enable(GPIOTE_IRQn, GPIOTE_CONFIG_IRQ_PRIORITY); NRF_GPIOTE->INTENSET = GPIOTE_INTENSET_IN2_Set<<GPIOTE_INTENSET_IN2_Pos; } void GPIOTE_IRQHandler(void) { if(NRF_GPIOTE->EVENTS_IN[2]==1&&(NRF_GPIOTE->INTENSET&GPIOTE_INTENSET_IN2_Msk)) { NRF_GPIOTE->EVENTS_IN[2]=0; send_command1_falg =true; } }
0 0
- Nordic-GPIO配置:初始化以及中断配置
- i.mx53 GPIO中断配置
- iMX257的GPIO中断配置
- STM32 外部GPIO中断配置
- s5pv210 中配置gpio为中断引脚。
- TM4C123GXL GPIO 中断 配置(学习笔记)
- imx515 wince6.0下配置GPIO中断
- 28335GPIO及外部中断配置介绍
- Nordic定时器配置(Timer模式)
- GPIO配置
- GPIO 配置
- NORDIC(一)Nordic_Keil的内存配置
- STM32 重新理解GPIO配置以及配置PWM波输出
- [DCT]MT6589 DCT配置GPIO的设置/初始化/编译
- stm32 tim6、tim7中断配置以及注意事项
- stm32 GPIO配置以及什么时候用 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU
- AndroidStudio下载、配色以及初始化配置
- FPGA上电配置以及初始化
- JVM调优总结
- 合并两个排序的链表
- 堆排序之java
- Spring-data-jpa生成表格失败的可能原因
- 【BZOJ 3238】[Ahoi2013]差异 后缀自动机构造后缀树
- Nordic-GPIO配置:初始化以及中断配置
- ORACLE 11gR2 RAC添加控制文件
- spring mvc通过@ResponseBody返回时,ajax接收显示问号(?)
- Cent OS unzip/zip文件到指定目录
- ubuntu使用virtualenv切换python环境
- 解决CSS垂直居中的几种方法(基于绝对定位,基于视口单位,Flexbox方法)
- 工作笔记
- 2017年云计算大会盘点 看看哪些云计算大会适合自己?
- 雷德算法