0、引言
本系列博客仅作为本人学习K210单片机的学习记录,作为初学者难免有错误之处,还望指出。
硬件:Sipeed Maix Dock开发板(推荐官方KD233开发板)
软件:Kendryte IDE(基于VS Code 开发)
文档:
Kendryte IDE使用手册
Standalone SDK编程指南
芯片技术规格书
SDK:
Kendryte SDK
MaixPy/drive
1、Kendryte IDE的使用
Kendryte IDE是基于VS Code所开发的编译器,并且已做了汉化处理,使用上相对方便,但由于使用Maix Dock开发板使用串口下载程序,而非JLINK,故无法使用进行在线调试,建议使用串口或LCD显示的方式debug。
1.1、使用线上软件包
在IDE安装完成后,
菜单栏——》kendryte——》软件包管理——》浏览线上软件包列表——》示例
在该界面下,查找需要的demo,
选择版本——》develop——》下载
在下载完成后,IDE会自动打开一个新的窗口,构建后如果出现了诸如未找到、无法打开.h文件的错误
菜单栏——》kendryte——》安装全部项目的依赖
安装成功后,选择IDE底部工具栏的
清理——》构建下载
1.2、添加文件
在建立自己的工程时,难免会遇到需要自行添加.c.h文件的场合,根据《Kendryte IDE使用手册》所提供的方法。见下图1
双击Kendryte-package.json打开项目配置,见下图2,文件结构见下图3,如src/*.c代表着该目录下全部.c文件。添加完成后,可以点清理——》安装全部项目的依赖——》构建
1.3、管脚配置
相较于其他常用的单片机,如STM32一类,大都引脚的对应的功能被固定,或使用映射的方式进行改变。但K210单片机具有FPIOA(现场可编程IO阵列)可以将255个内部功能映射到外围48个IO上(见下图1),芯片内部有8个通用GPIO和32个高速GPIOHS,可以通过双击device-manager.json,打开FPIOA Configure进行配置(见下图2),配置完成后,会在fpioa-config.c中自动生成配置代码(见下图3)。除此之外,还可以在代码中直接进行配置
此外还可以直接配置fpioa的方法进行管脚配置,下图展示LCD驱动所采用的管脚配置方法
原理图LCD部分
LCD.h 所定义的数值
LCD.c(引脚38——GPIOHS(2)——LCD_DC)
fpio.h
有关VS Code的相关使用方法,可以参考
VS Code官网
2、通用GPIO的使用
芯片具有8个通用GPIO,可配置为上拉下拉驱动模式
Maix Dock所采用的原理图
所配置的管脚
其中按键使用GPIO 31—— GND的方式。
int main(void) {
gpio_init();//初始化GPIO
gpio_set_drive_mode(0, GPIO_DM_OUTPUT);//将GPIO 0配置为输出模型
gpio_set_drive_mode(1, GPIO_DM_OUTPUT);
gpio_set_drive_mode(2, GPIO_DM_OUTPUT);
gpio_set_pin(0, GPIO_PV_HIGH);//GPIO 0 输出高
gpio_set_pin(1, GPIO_PV_HIGH);
gpio_set_pin(2, GPIO_PV_HIGH);
// gpio_set_drive_mode(3, GPIO_DM_INPUT_PULL_UP); //Key设置为上拉输入
// gpio_set_pin(1, 1); // LED初始化,灭
while (1) {
// Key按下为低,取反为高,LED灭,非按下LED亮
// gpio_set_pin(1, ~gpio_get_pin(3));
// msleep(50);
//-------闪烁灯-------
gpio_set_pin(1, 1);
msleep(500);
gpio_set_pin(1, 0);
msleep(500);
}
}
详情请参考 《Standalone SDK编程指南》——通用输入/输出(GPIO)部分
3、高速GPIOHS(中断)
K210具有32个高速GPIO,相较通用GPIO,其管脚反转能力更强,GPIOHS可配置为上下拉驱动模式,支持上升沿、下降沿和双边沿触发。
以下程序使用IO 31作为GPIOHS 0,使用下降沿触发(管脚配置为上拉输入),使用IO 13作为GPIO 1,作为LED的输出控制
#include #include #include char LED_flag = 0; void Flash_LED() { msleep(100); //消抖 if (!gpiohs_get_pin(0)) //判断电平状态 LED_flag = ~LED_flag; } int main(void) { gpio_init(); gpio_set_drive_mode(1, GPIO_DM_OUTPUT);//LED gpio_set_pin(1, GPIO_PV_HIGH); //配置中断管脚 gpiohs_set_drive_mode(0, GPIO_DM_INPUT_PULL_UP); // Key上拉输入 gpiohs_set_pin_edge(0, GPIO_PE_FALLING); //配置为下降沿触发 //中端管脚、优先级(1-1023)、中断回调函数(类似中断服务程序)、回调函数参数 gpiohs_irq_register(0, 1, Flash_LED, 0); while (1) { gpio_set_pin(1, LED_flag); } } 4、参考资料 《Kendryte IDE使用手册》 《Standalone SDK编程指南》 《芯片技术规格书》
上一篇:K210学习记录(2)——UART(串口)
下一篇:N76E003双串口中断配置、问题及解决方法
推荐阅读最新更新时间:2024-11-13 03:43
设计资源 培训 开发板 精华推荐
- 【征集令】ESP8266小游戏机
- 【赛车征集令】环境勘探车遥控器部分
- LD39200 的典型应用原理图,具有反向电流保护的 2A 高 PSRR 超固定低压降线性稳压器
- RD-511,将 FSQ0370RNA 电源开关用于辅助电源应用的参考设计
- 具有可调软启动功能的 LT1956EGN-5 降压转换器的典型应用电路
- 条形双电机驱动
- 51单片机对RTL8019以太网控制实例(原程序+原理图)
- SmartControl
- 0.8 至 5V DC 至 DC 单路输出电源,适用于台式电脑电源
- 基于2.4GHz ZigBee IEEE 802.15.4的无线电收发器解决方案(RFMD RF6505 / 6575/6555)