使用PKE8720DF
目录
1. 板载LED and Keys介绍
2. PKE8720DF-C13-F10(AMB26)引脚图和功能
3.代码提供
4. 准备工作
(1)材料准备
(2)生成image
(3)线路连接
5. 实验结果
阅读使用PKE8720DF-C13-F10(AMB26)开发板——周期性点亮LED灯这篇文章,可以很方便的上手PKE8720DF-C13-F10(AMB26)开发板,方便用户二次开发。
本文着重描述PKE8720DF-C13-F10(AMB26)开发板如何(基于GPIO实验)实现RGB跑马灯。
1. 板载LED and Keys介绍
通过上图和表格可知,板载RGB是由PA12,PA13,PA14三个pin控制。
RGB原理图也一并给出:
2. PKE8720DF-C13-F10(AMB26)引脚图和功能
由上面引脚图和功能可以得知,PA和PB口均可以实现GPIO的功能。
3.代码提供
本实验代码在github(GitHub - ambiot/ambd_sdk: Release SDK for AmebaD)下载的SDK code里面并没有提供,所有这边有coding好并给到大家(需要本地创建main.c文档,并copy以下代码):
#include "device.h"
#include "main.h"#define GPIO_LED_PIN_G _PA_12 //Green
#define GPIO_LED_PIN_R _PA_13 //Red
#define GPIO_LED_PIN_B _PA_14 //Blue
#define GPIO_PUSHBT_PIN _PB_1void raw_gpio_RGB_demo(void)
{u32 i,j;GPIO_InitTypeDef GPIO_InitStruct_LED_G;GPIO_InitTypeDef GPIO_InitStruct_LED_R;GPIO_InitTypeDef GPIO_InitStruct_LED_B;GPIO_InitTypeDef GPIO_InitStruct_PUSHBT;// Init LED control pinGPIO_InitStruct_LED_G.GPIO_Pin = GPIO_LED_PIN_G;GPIO_InitStruct_LED_G.GPIO_Mode = GPIO_Mode_OUT;GPIO_Init(&GPIO_InitStruct_LED_G);GPIO_InitStruct_LED_R.GPIO_Pin = GPIO_LED_PIN_R;GPIO_InitStruct_LED_R.GPIO_Mode = GPIO_Mode_OUT;GPIO_Init(&GPIO_InitStruct_LED_R);GPIO_InitStruct_LED_B.GPIO_Pin = GPIO_LED_PIN_B;GPIO_InitStruct_LED_B.GPIO_Mode = GPIO_Mode_OUT;GPIO_Init(&GPIO_InitStruct_LED_B);// Init Push Button pinGPIO_InitStruct_PUSHBT.GPIO_Pin = GPIO_PUSHBT_PIN;GPIO_InitStruct_PUSHBT.GPIO_Mode = GPIO_Mode_IN;GPIO_InitStruct_PUSHBT.GPIO_PuPd = GPIO_PuPd_UP;GPIO_Init(&GPIO_InitStruct_PUSHBT);while (1) {if (GPIO_ReadDataBit(GPIO_PUSHBT_PIN)) {//turn off LEDGPIO_WriteBit(GPIO_LED_PIN_G, 0);GPIO_WriteBit(GPIO_LED_PIN_R, 0);GPIO_WriteBit(GPIO_LED_PIN_B, 0);j = 0;} else {// turn on LED if(j%3 == 0){GPIO_WriteBit(GPIO_LED_PIN_G, 1);GPIO_WriteBit(GPIO_LED_PIN_R, 0);GPIO_WriteBit(GPIO_LED_PIN_B, 0);for (i=0; i<20000000; i++) asm("nop");}if(j%3 == 1){GPIO_WriteBit(GPIO_LED_PIN_G, 0);GPIO_WriteBit(GPIO_LED_PIN_R, 1);GPIO_WriteBit(GPIO_LED_PIN_B, 0);for (i=0; i<20000000; i++) asm("nop");}if(j%3 == 2){GPIO_WriteBit(GPIO_LED_PIN_G, 0);GPIO_WriteBit(GPIO_LED_PIN_R, 0);GPIO_WriteBit(GPIO_LED_PIN_B, 1);for (i=0; i<20000000; i++) asm("nop"); } j++;}}
}/*** @brief Main program.* @param None* @retval None*/
void main(void)
{if (pdTRUE != xTaskCreate( (TaskFunction_t)raw_gpio_RGB_demo, "RAW_GPIO_RGB_DEMO_TASK", (2048 /4), (void *)NULL, (tskIDLE_PRIORITY + 1), NULL)){DiagPrintf("Create RAW_GPIO_DEMO_TASK Err!!\n");}vTaskStartScheduler();
}
可以看到上述代码里面使用PB1作为RGB灯控制pin,并且PB1默认是高电平输出,此时RGB灯不会被点亮并闪烁,当将PB1接到板子上的GND之后,RGB灯被点亮并闪烁。
4. 准备工作
(1)材料准备
- 1 块 PKE8720DF-C13-F10开发板
- 1 根 USB转type-C数据线
- 1 根 杜邦线
(2)生成image
将上面自己创建的main.c,替换/project/realtek_amebaD_va0_example/src/src_hp里面的main.c,make all生成3个bin文件:
km0_boot_all.bin
km4_boot_all.bin
km0_km4_image2.bin
之后download image到板子。
(3)线路连接
用USB转type-C数据线连接开发板到PC上。
5. 实验结果
以上工作准备好之后,连接PB1到GND,如下图所示:
这时候可以观察到板载RGB灯闪烁:
RGB跑马灯
实验结果符合预期!!!
更多推荐
使用PKE8720DF
发布评论