[经验分享] 【3】AT32F437 OpenHarmony轻量系统第一个程序:点灯 原创

离北况归 显示全部楼层 发表于 2024-8-20 00:02:40

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

编写点灯程序

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

1.分析原理图掌握led灯连接的gpio口,可知PD13、PD14、PD15分别连接这三个灯。 image.png

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,把样例注释打开 image.png 然后在vendor/artery/AT-START-F437/BUILD.gn中,把样例注释打开

image.png

编译烧录程序

./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驱动

image.png

2.打开ICP烧录工具 image.png

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

image.png

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

image.png

©著作权归作者所有,转载或内容合作请联系作者

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部