• 100SLM130(NBIOT)CSDK(OpenCPU)学习开发GPIO输出高低电平,设置电平电压,关于休眠保持引脚


    <p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/LearnEC616_SLM130" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

    注意带*号的, 开发板标识有误,按照最外围标识为准

    说明

    1,打开芯片数据手册

     

    2,再说一下另一个事情

    芯片的引脚是P0, P1, P2...口这样子的, 每个口有16个管脚,

    即(P0_0 -- P0_15)  (P1_0 -- P1_15)  (P2_0 -- P2_15) 

    手册上面标识的 GPIO0 - GPIO15   其实是 P0_0 -- P0_15

    手册上面标识的 GPIO16 - GPIO31 其实是 P1_0 -- P1_15

    手册上面标识的 GPIO32 - GPIO47 其实是 P2_0 -- P2_15

    设置GPIO3输出高低电平

    #include "app.h"
    #include "bsp.h"
    #include "pad_ec616.h"
    #include "gpio_ec616.h"
    
    #define GPIO_PIN_NUMBER    (3) //GPIO编号
    
    #define GPIO_PORT          (GPIO_PIN_NUMBER/16) //在哪个端口上(P0 / P1 / P2)
    #define GPIO_PIN           (GPIO_PIN_NUMBER%16) //在端口上的编号
    
    #define GPIO_PAD_INDEX     (14) //引脚对应的PAD地址, 这个看手册哈
    #define GPIO_PAD_ALT_FUNC  (PAD_MuxAlt0) //使用其第几功能
    
    void gpio_init(void)
    {
        /*配置GPIO的功能*/
        pad_config_t padConfig;
        PAD_GetDefaultConfig(&padConfig);
    
        padConfig.mux = GPIO_PAD_ALT_FUNC;//设置使用其第几功能
        PAD_SetPinConfig(GPIO_PAD_INDEX, &padConfig);//配置PAD
        PAD_SetPinPullConfig(GPIO_PAD_INDEX, PAD_InternalPullUp);//设置内部上下拉
    
        /*配置GPIO的输入输出初始化*/
        gpio_pin_config_t config;
        config.pinDirection = GPIO_DirectionOutput;//输出模式
        config.misc.initOutput = 1;//初始输出高电平
    
        GPIO_PinConfig(GPIO_PORT, GPIO_PIN, &config);//配置
    }
    
    int value=0;
    void main_entry(void)
    {
        BSP_CommonInit();//官方底层初始化函数,默认写上就可以
        gpio_init();
        while (1)
        {
            value  = value+1;
            if(value<10000) GPIO_PinWrite(GPIO_PORT, 1 << GPIO_PIN, 1 << GPIO_PIN); //设置GPIO输出高电平
            else if (value<20000) GPIO_PinWrite(GPIO_PORT, 1 << GPIO_PIN, 0); //设置GPIO输出低电平
            else if (value<30000) value=0;
        }
    }

    程序说明

    1,首先是配置其GPIO的功能

    2,初始化GPIO

    3,设置GPIO输出高低电平

    输出高电平:  GPIO_PinWrite(GPIO_PORT, 1 << GPIO_PIN, 1 << GPIO_PIN);

    输出低电平:  GPIO_PinWrite(GPIO_PORT, 1 << GPIO_PIN, 0);

    按照上面那样子写就可以,不必深究, 因为最终也只不过是配置寄存器的某些位的数据而已.

    4,假设设置GPIO19输出高低电平

    设置管脚输出电压

    #include "slpman_ec616.h"
     

    设置AON2管脚

    EC616芯片有6个休眠保持引脚

    AON_GPIO1 - AON_GPIO6  分别对应这  GPIO20 - GPIO25

    #include <stdio.h>
    #include "app.h"
    #include "bsp.h"
    #include "slpman_ec616.h"
    #include "bsp_custom.h"
    #include "pad_ec616.h"
    #include "gpio_ec616.h"
    
    #define GPIO_PIN_NUMBER    (21) //GPIO编号
    
    #define GPIO_PORT          (GPIO_PIN_NUMBER/16) //在哪个端口上(P0 / P1 / P2)
    #define GPIO_PIN           (GPIO_PIN_NUMBER%16) //在端口上的编号
    
    //可以不用配置PAD
    // #define GPIO_PAD_INDEX     (33) //引脚对应的PAD地址, 这个看手册哈
    // #define GPIO_PAD_ALT_FUNC  (PAD_MuxAlt0) //使用其第几功能
    
    void gpio_init(void)
    {
        /*配置GPIO的功能*/
        // pad_config_t padConfig;
        // PAD_GetDefaultConfig(&padConfig);
    
        // padConfig.mux = GPIO_PAD_ALT_FUNC;//设置使用其第几功能
        // PAD_SetPinConfig(GPIO_PAD_INDEX, &padConfig);//配置PAD
        // PAD_SetPinPullConfig(GPIO_PAD_INDEX, PAD_InternalPullUp);//设置内部上下拉
    
        /*配置GPIO的输入输出初始化*/
        gpio_pin_config_t config;
        config.pinDirection = GPIO_DirectionOutput;//输出模式
        config.misc.initOutput = 1;//初始输出高电平
    
        GPIO_PinConfig(GPIO_PORT, GPIO_PIN, &config);//配置
    }
    
    void main_entry(void)
    {
        BSP_CommonInit();//官方底层初始化函数,默认写上就可以
        BSP_CustomInit();//配置串口打印
    
        slpManAONIOPowerOn();//使能AON引脚
        slpManAONIOLatchEn(AonIOLatch_Enable);//是否在模组休眠时保持
        slpManAONIOVoltSet(IOVOLT_3_30V);//设置AON引脚电平
    
        gpio_init();
        while (1)
        {
    
        }
    }
  • 相关阅读:
    maven常用仓库
    AD域安装及必要设置
    oracle创建表空间
    javascript弹出模态窗体
    win8.1 AMD 屏幕亮度无法调整
    tomcat优化
    CentOS 6.2 中文
    tomcat之JNDI数据源配置
    eclipse中tomcat配置(待完善)
    Ant打jar包指定MainClass
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/16190948.html
Copyright © 2020-2023  润新知