OpenHarmony开发者论坛
标题:
【3】AT32F437 OpenHarmony轻量系统第一个程序:点灯
[打印本页]
作者:
润开鸿_贾佳豪
时间:
2024-8-20 00:02
标题:
【3】AT32F437 OpenHarmony轻量系统第一个程序:点灯
[md]在搭建好AT32F437 OpenHarmony 轻量系统之后,当然要尝试点一下灯了。
## 编写点灯程序
笔者在适配OpenHarmony轻量系统的时候,只对源码的device和vendor目录进行了修改,AT32的app目录笔者放置在了[vendor/tree/master/artery/AT-START-F437/app](
https://gitee.com/AT32437_OpenHa ... y/AT-START-F437/app
)路径下。
1.分析原理图掌握led灯连接的gpio口,可知PD13、PD14、PD15分别连接这三个灯。
![image.png](
https://dl-harmonyos.51cto.com/i ... rocess=image/resize
,w_820,h_636)
2.使用AT32437的驱动库初始化gpiod,驱动库的存放路径位于[device/tree/master/soc/artery/at32f4xx/libraries/drivers/src](
https://gitee.com/AT32437_OpenHa ... braries/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_OpenHa ... p/0_led_test/main.c
5.打开[vendor/artery/AT-START-F437/app/BUILD.gn](
https://gitee.com/AT32437_OpenHa ... T-F437/app/BUILD.gn
),把样例注释打开
![image.png](
https://dl-harmonyos.51cto.com/i ... rocess=image/resize
,w_820,h_264)
然后在[vendor/artery/AT-START-F437/BUILD.gn](
https://gitee.com/AT32437_OpenHa ... START-F437/BUILD.gn
)中,把样例注释打开
![image.png](
https://dl-harmonyos.51cto.com/i ... rocess=image/resize
,w_762,h_444)
## 编译烧录程序
```
./build.sh --product-name AT-START-F437 --ccache --no-prebuilt-sdk
```
编译好的固件是 `out\atstartf437\AT-START-F437\bin`的 `AT-START-F437.bin`文件
1.AT-START-F437开发板自带块ATlink调试接口。首先安装[ATlink驱动](
https://gitee.com/AT32437_OpenHa ... grammer_V3.0.18.zip
)
![image.png](
https://dl-harmonyos.51cto.com/i ... rocess=image/resize
,w_820,h_267)
2.打开ICP烧录工具
![image.png](
https://dl-harmonyos.51cto.com/i ... rocess=image/resize
,w_820,h_647)
3.点击连接,添加bin文件或者hex文件。开始下载文件到开发板上
![image.png](
https://dl-harmonyos.51cto.com/i ... rocess=image/resize
,w_820,h_1231)
3.最后完成烧录断开连接
![image.png](
https://dl-harmonyos.51cto.com/i ... rocess=image/resize
,w_820,h_1236)
[/md]
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5