【3】AT32F437 OpenHarmony轻量系统第一个程序:点灯

离北况归
发布于 2024-8-20 00:01
浏览
0收藏

在搭建好AT32F437 OpenHarmony 轻量系统之后,当然要尝试点一下灯了。

编写点灯程序

笔者在适配OpenHarmony轻量系统的时候,只对源码的device和vendor目录进行了修改,AT32的app目录笔者放置在了vendor/tree/master/artery/AT-START-F437/app路径下。

1.分析原理图掌握led灯连接的gpio口,可知PD13、PD14、PD15分别连接这三个灯。
【3】AT32F437 OpenHarmony轻量系统第一个程序:点灯-鸿蒙开发者社区

2.使用AT32437的驱动库初始化gpiod,驱动库的存放路径位于device/tree/master/soc/artery/at32f4xx/libraries/drivers/src路径下

    //开启GPIOD的时钟
    crm_periph_clock_enable(CRM_GPIOD_PERIPH_CLOCK, TRUE);

    //gpio结构体
    gpio_init_type gpio_config;

    //io管脚
    gpio_config.gpio_pins = GPIO_PINS_13 | GPIO_PINS_14 | GPIO_PINS_15;   

    //输出模式   
    gpio_config.gpio_mode = GPIO_MODE_OUTPUT;
    
    //无上下拉电阻
    gpio_config.gpio_pull = GPIO_PULL_NONE;

    //设置为推挽输出模式,即引脚可以提供高电平和低电平输出。
    gpio_config.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;

    /*    
    GPIO_DRIVE_STRENGTH_MODERATE 对应适中的电流推动/吸入能力
    GPIO_DRIVE_STRENGTH_STRONGER 对应较大的电流推动/吸入能力
    GPIO_DRIVE_STRENGTH_MAXIMUM 对应极大的电流推动/吸入能力
    如果 IO 速度设置为最大的推动力设置,且负载较小时,易在 IO 上产生过冲振铃现象,存在影响应用的可能性
    */
    gpio_config.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;

    //初始化gpio
    gpio_init(GPIOD, &gpio_config);           // group C

3.然后操作数据寄存器odt控制输出高低电平点亮熄灭led

    while (TRUE) {
        printf("GpioTask: LED_On\n");
        //通过GPIO输入数据寄存器odt输出高电平,也可以通过gpio_bits_set来输出高电平(可以查看gpio_bits_set定义)
        GPIOD->odt |= GPIO_PINS_13;
        GPIOD->odt |= GPIO_PINS_14;
        GPIOD->odt |= GPIO_PINS_15;
        //gpio_bits_set(GPIOD,GPIO_PINS_1);
        //sleep(1);
        //delay_ms(10);
        //delay_sec(1);
        osDelay(80);
        
        printf("GpioTask: LED_Off\n");
        //通过GPIO输入数据寄存器odt输出高电平,也可以通过gpio_bits_reset来输出高电平(可以查看gpio_bits_reset定义)
        GPIOD->odt &= ~GPIO_PINS_13;
        GPIOD->odt &= ~GPIO_PINS_14;
        GPIOD->odt &= ~GPIO_PINS_15;
        //gpio_bits_reset(GPIOD,GPIO_PINS_1);
        //sleep(1);
        //delay_ms(10);
        //delay_sec(1);
        osDelay(80);
    }

4.具体实现代码请查看
https://gitee.com/AT32437_OpenHarmony/vendor/blob/master/artery/AT-START-F437/app/0_led_test/main.c

5.打开vendor/artery/AT-START-F437/app/BUILD.gn,把样例注释打开
【3】AT32F437 OpenHarmony轻量系统第一个程序:点灯-鸿蒙开发者社区
然后在vendor/artery/AT-START-F437/BUILD.gn中,把样例注释打开

【3】AT32F437 OpenHarmony轻量系统第一个程序:点灯-鸿蒙开发者社区

编译烧录程序

./build.sh --product-name AT-START-F437 --ccache --no-prebuilt-sdk

编译好的固件是out\atstartf437\AT-START-F437\binAT-START-F437.bin文件

1.AT-START-F437开发板自带块ATlink调试接口。首先安装ATlink驱动

【3】AT32F437 OpenHarmony轻量系统第一个程序:点灯-鸿蒙开发者社区

2.打开ICP烧录工具
【3】AT32F437 OpenHarmony轻量系统第一个程序:点灯-鸿蒙开发者社区

3.点击连接,添加bin文件或者hex文件。开始下载文件到开发板上

【3】AT32F437 OpenHarmony轻量系统第一个程序:点灯-鸿蒙开发者社区

3.最后完成烧录断开连接

【3】AT32F437 OpenHarmony轻量系统第一个程序:点灯-鸿蒙开发者社区

标签
已于2024-8-20 00:01:34修改
2
收藏
回复
举报
1条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

12点发文,大佬辛苦了

回复
2024-8-20 09:54:46
回复
    相关推荐