ARM Cortex-M0+Kinetis L系列学习笔记_GPIO端口设置

这篇博客介绍了如何在ARM Cortex-M0+ Kinetis L系列芯片上设置GPIO端口,特别是将PORTB19配置为数字输出并输出低电平。博主提供了两种方法:直接地址方式和通过GPIO驱动构件。详细讲解了包括端口基地址、引脚控制寄存器、数据方向寄存器等概念,并给出了初始化、设置输出状态、获取输入状态等函数的实现。
摘要由CSDN通过智能技术生成

GPIO 端口设置

   设置PORTB19引脚为数字输出,输出为低电平.

方法一: 直接地址方式

   1.1 volatile uint_32 *portB_ptr= (uint_32 *) 0x4004A000u; //找到PORTB端口的引脚控制寄存器的基地址,也是PORTB引脚0的控制寄存器的地址

   1.2 volatile uint_32 *portB_PCR_19=portB_ptr+19; //通过PORTB端口的引脚控制寄存器的基地址+偏移量,找到PORTB 引脚19的地址

   1.3 *portB_PCR_19=0x00000100;//通过设置PORTB端口引脚19的控制寄存器的MUX(8~10位)为001来设置此引脚为GPIO引脚

   1.4 volatile uint_32 *gpioB_ptr=(uint_32 *) 0x400FF040u;//找到PORTB端口(作为GPIO端口)的基地址,也是此端口PDOR寄存器的地址

   1.5 volatile uint_32 * gpioB_PDDR=gpioB_ptr+5;//通过PORTB端口(作为GPIO端口)的基地址+偏移量,找到GPIOB的PDDR的地址

   1.6 volatile uint_32 * gpioB_PDOR=gpioB_ptr+0;//通过PORTB端口(作为GPIO端口)的基地址+偏移量,找到GPIOB的PDOR的地址

   1.7 *gpioB_PDDR|=(1<<19);//定义PORTB 引脚19为数字输出

   1.8 *gpioB_PDOR&=~(1<<19);//定义PORTB 引脚19为输出低电平

方法二: 通过建立GPIO驱动构件

   2.1 设计GPIO.h头文件

 

#ifndef GPIO_H       //防止重复定义(gpio_H  开头)
#define GPIO_H

#include "common.h"   //包含公共要素头文件

// 端口号地址偏移量宏定义
#define PORTA    0
#define PORTB    1
#define PORTC    2
#define PORTD    3
#define PORTE    4
//引脚方向宏定义
#define GPIO_IN      0
#define GPIO_OUTPUT  1

void gpio_init(uint_8 port, uint_8 pin, uint_8 dir, uint_8 state);

void gpio_set(uint_8 port, uint_8 pin, uint_8 state);

uint_8 gpio_get(uint_8 port, uint_8 pin);

void gpio_reverse(uint_8 port, uint_8 pin);

void gpio_pull(uint_8 port,uint_8 pin, uint_8 pullselect);

#endif     //防止重复定义(gpio_H  结尾)


2.2 设计GPIO.c源文件


#include "gpio.h"   //包含本构件头文件

//各端口基地址放入常数数据组PORT_ARR[0]~PORT_ARR[4]中
const PORT_MemMapPtr PORT_ARR[]={PORTA_BASE_PTR,PORTB_BASE_PTR,
                         PORTC_BASE_PTR,PORTD_BASE_PTR,PORTE_BASE_PTR};
//GPIO口基地址放入常数数据组GPIO_ARR[0]~GPIO_ARR[4]中
const GPIO_MemMapPtr GPIO_ARR[]={PTA_BASE_PTR,PTB_BASE_PTR,
                          PTC_BASE_PT

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值