K60学习笔记三:GPIO口的底层驱动操作带API接口

这篇博客探讨了GPIO口的底层驱动操作,强调了C语言中的const和volatile修饰符的重要性。文章按照设置PORT为GPIO复用和配置输入输出方向的步骤介绍了GPIO模块编程,并提倡在库开发中采用软件分层思想,提供友好的API接口给用户程序调用。
摘要由CSDN通过智能技术生成

GPIO 用于普通I/O口的输入输出
C预备知识:
const 修饰只读常量
volatile修饰易变量,表示编译器不能进行优化
GPIO模块的编程步骤:
1.设置PORT端口为GPIO复用
2.设置GPIO口的输入输出方向

在进行库开发时要有软件分层的思想 。

GPIO.c

GPIO_MemMapPtr GPIOX[PTX_MAX] = {PTA_BASE_PTR,PTB_BASE_PTR,PTC_BASE_PTR, PTD_BASE_PTR, PTE_BASE_PTR}; //定义五个指针数组保存 GPIOX 的地址
//这些数组元素表达了GPIO_MemMapPtr结构体指针的地址
//GPIO初始化
void gpio_init (PTXn_e ptxn, GPIO_CFG cfg, uint8 data)
{


    //端口方向控制输入还是输出
    if(  cfg == GPI )
    //在GPIO.h中有枚举:
    //typedef enum GPIO_CFG
//  {
   
//      //这里的值不能改!!!
//      GPI         = 0,                                //定义管脚输入方向      
//      GPO         = 1,                                //定义管脚输出方向
//  } GPIO_CFG;

    {
        //设置端口方向为输入
        GPIO_PDDR_REG(GPIOX_BASE(ptxn)) &= ~(1 << PTn(ptxn));       // GPIO PDDR 管脚号 清0,即对应管脚配置为端口方向输入
       //#define GPIOX_BASE(PTxn)    GPIOX[PTX(PTxn)]       //GPIO模块的地址
    }
    else
    {
        //设置端口方向为输出
        GPIO_PDDR_REG(GPIOX_BASE(ptxn)) |= (1 << PTn(ptxn));        // GPIO PDDR 管脚号 置1,即对应管脚配置为端口方向输出

        //端口输出数据
        if(data == 0)
        {
            GPIO_PDOR_REG(GPIOX_BASE(ptxn)) &= ~(1 << PTn(ptxn));  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值