KL26---GPIO 复用

先进行PORT端口的复用:
1.使能时钟
2.清中断
3.进行端口复用

void  PORT_init(PTXn_e ptxn, uint32 cfg )
{
    SIM_SCGC5 |= (SIM_SCGC5_PORTA_MASK << PTX(ptxn));                           //开启PORTx端口  1.使能PORT时钟
                                                                                //系统时钟门控寄存器控制A,B,C,D,E的时钟源
    PORT_ISFR_REG(PORTX_BASE(ptxn)) = (1<<PTn(ptxn));                           // 清空标志位    2.清空中断标志位,写1清0,就是说需要该位置0时,写入1,写入0,没有任何反应,寄存器标志位都是写1清0的。

    PORT_PCR_REG(PORTX_BASE(ptxn), PTn(ptxn)) = cfg;                            // 复用功能 实现中断触发方式,带无源滤波器,复用功能口,上拉或下拉电阻     3.配置port的各种属性
}

GPIO接口:
1.选定特定的端口
2.配置需要的特定功能
3.设置GPIO输出电压的高低
寄存器操作:
配置寄存器:选定GPIO的特定功能
数据寄存器:保存了GPIO的输入电平或将输入的电平
位控制寄存器:设置某引脚的数据为1或0
锁存寄存器:设定某锁定引脚后,就不能修改配置

void gpio_init (PTXn_e ptxn, GPIO_CFG cfg, uint8 data)
{


    //端口方向控制输入还是输出
    if(  cfg == GPI )
    {
        //设置端口方向为输入
        GPIO_PDDR_REG(GPIOX_BASE(ptxn)) &= ~(1 << PTn(ptxn));       // GPIO PDDR 管脚号 清0,即对应管脚配置为端口方向输入
    }
    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));   // GPIO PDOR 管脚号 清0,即对应管脚配置为端口输出低电平
        }
        else
        {
            GPIO_PDOR_REG(GPIOX_BASE(ptxn))  |= (1 << PTn(ptxn));   // GPIO PDOR 管脚号 置1,即对应管脚配置为端口输出高电平
        }
    }

    //复用管脚为GPIO功能
    port_init( ptxn, ALT1);
}

今天先学到这

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值