K210学习记录(1)——GPIO与软件使用

发布者:CyborgDreamer最新更新时间:2022-07-01 来源: csdn关键字:GPIO  软件使用 手机看文章 扫描二维码
随时随地手机看文章

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编程指南》


《芯片技术规格书》


关键字:GPIO  软件使用 引用地址:K210学习记录(1)——GPIO与软件使用

上一篇:K210学习记录(2)——UART(串口)
下一篇:N76E003双串口中断配置、问题及解决方法

推荐阅读最新更新时间:2024-11-13 03:43

STM32 GPIO 寄存器配置
一.CRH和CRL的使用:fficeffice / CRH和CRL的使用基本相同,CRH用于控制GPIOX(X表示A---G)的高8位(Pin15---Pin8),而CRL用于控制GPIOX(X表示A---G)的低8位(Pin7----Pin0)。 二.ODR的使用: 1. RCC- APB2ENR|=1 2; //使能PORTA时钟 GPIOA- CRH&=0XFFFFFFF0;//清除该位原来的设置 GPIOA- CRH|=0X00000003;//PA8 推挽输出 GPIOA- ODR|=
[单片机]
STM8学习笔记四——STM8的GPIO基础知识
一、GPIO定义 GPIO,即通用输入输出端口General Purpose Input Output的缩写。 GPIO端口可以通过程序配置成输入端口或输出端口。 二、GPIO的IO模式 STM8的GPIO口有12种模式设置,其中输入4种,输出8种: 1、GPIO_Mode_In_FL_No_IT浮空输入无中断 2、GPIO_Mode_In_PU_No_IT上拉输入无中断 3、GPIO_Mode_In_FL_IT浮空输入有中断 4、GPIO_Mode_In_PU_IT 上拉输入有中断 5、GPIO_Mode_Out_OD_Low_Fast 开漏-输出低-高速 Output open-drain, low level, 10MHz
[单片机]
STM8学习笔记四——STM8的<font color='red'>GPIO</font>基础知识
基于STM32的外设的GPIO外设设置总结
1、背景 外设驱动的寄存器设置对于外设功能正常运行异常重要。现在对GPIO的配置进行总结。 2、GPIO的配置总结 复用GPIO配置 GPIO设置为输出或者是复用模式时,需要设置输出速度;而无论设置为什么模式,都要对GPIO的内部上下拉进行设置。 注意:在输入模式(普通输入/模拟输入)下,OTYPE和OSPEED参数无效!!
[单片机]
基于STM32的外设的<font color='red'>GPIO</font>外设设置总结
GPIO资源总结
STM32Fx系列 GPIO基本结构 保护二极管:IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入。当引脚电压高于VDD时,上方的二极管导通;当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。但是尽管如此,还是不能直接外接大功率器件,须加大功率及隔离电路驱动,防止烧坏芯片或者外接器件无法正常工作。 P-MOS管和N-MOS管:由P-MOS管和N-MOS管组成的单元电路使得GPIO具有“推挽输出”和“开漏输出”的模式。这里的电路会在下面很详细地分析到。 TTL肖特基触发器:信号经过触发器后,模拟信号转化为0和1的数字信号。但是,当GPIO引脚作为ADC采集电压的输入通道时,用其“
[单片机]
<font color='red'>GPIO</font>资源总结
AVR单片机ATMEGA16编译软件ICCAVR的使用技巧与应用示例
一、先来一段朴实的独白吧 写这篇文的时间是2018年3月21日。大学2013毕业,专业是机械,但喜欢电子。篇首声明:哪一行都有鄙视链,就连打个游戏都不例外。如果大神路过这里,请您show your mercy然后walk away就当nothing happened. 当然,大牛都是很低调的,因为他们身心都沉进编程的世界里不能自拨。好了本文就ICCAVR的使用说明作一个入门式的引导,方便新、老网友作一种可供使用的参考。 上大学并不是为了纯读书,而是自我发现、反馈、然后决定的心理成熟过程,好吧这就是我的层次。上学时为了搞懂一个东西,在网上查找所有的有用的信息资料,当然必须免费的,唉不谈。。现在如果需要一些资源直接买买买,省时省力
[单片机]
AVR单片机ATMEGA16编译<font color='red'>软件</font>ICCAVR的<font color='red'>使用</font>技巧与应用示例
Stm32位带操作分析-浅显易懂
  正在准备做毕业设计,配置LED_Config()的时候,又看到了位带操作的宏定义,我又嘀咕了,什么是位带操作,一年前在使用位带操作的时候,就查阅过好多资料,Core-M3也看过,但是对于博主这种“低能儿”来说,你不把它说的白一点,就是感觉理解的不够透彻,于是今天又一次,查阅了各种手册,也算是基本弄懂了,鉴于博主的个人特点,所以本人的介绍也会十分浅显易懂,希望能帮到各位! 首先,抛砖引玉,来两个问题:   1)为什么STM32里面会有位带操作?   2)STM32里面的位带操作是什么意思? 我也不想去弄什么官方定义了,来两个例子,相信各位心里即使不能给出一个确切的定义,也不会再去纠结这个问题, 答:   
[单片机]
Stm32位带操作分析-浅显易懂
STM32Cube MX 下IIC的配置与使用--GPIO模拟
本文介绍了在STM32下的IIC的基本使用方法,通过对板载具备IIC接口EEPROM的读写,完成对IIC驱动程序的测试。 硬件平台:STM32F107VCT6开发板 软件平台:STM32Cube MX + MDK5.22 1. 进行STM32Cube MX的配置 配置PB6和PB7为输出模式,同时配置了USART1进行串口调试使用。然后生成工程。 2. 打开工程,可以看到GPIO的初始化状态 3. 模拟IIC驱动程序源文件代码 /** * @file iic_dup.c * @brief IIC上层程序 * @par date version author remar
[单片机]
STM32Cube MX 下IIC的配置与<font color='red'>使用</font>--<font color='red'>GPIO</font>模拟
节省IO的小技巧:GD32 MCU如何使用一个GPIO实现串口半双工收发
一般情况串口的接受和发送分别需要使用TX和RX两个引脚来实现,但在一些UART的实际应用中,通信双方身份为主机和从机,数据流是半双工的,那么当IO口资源紧张时可以使用半双工模式通过一个引脚实现数据的发送和接受,同时又保证数据不出错。我们一起来看下红枫派开发板例程中是如何实现的? 首先GD32F303的UART是支持半双工模式的,但想要真正使用起来,软硬件还需要特殊设计。 首先是硬件设计,在红枫派开发板中的RS485通信使用半双工实现,原理图是这样的: 其中很重要的两个点是: 1、在MCU的TX引脚上一定要增加一个上拉电阻,保证MCU发送和接受模式切换时IO口电平可以保持高电平的空闲态。 2、485端实际还是发送和接受
[单片机]
节省IO的小技巧:GD32 MCU如何<font color='red'>使用</font>一个<font color='red'>GPIO</font>实现串口半双工收发
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved