K210裸机开发(〇)简介及准备

一、简介

 最开始接触K210是MaixPy,后来逐渐体会到K210的性能强大,于是萌生了用C语言写用来作控制的想法,查了资料,确实可以,于是就试着用了一下官方的C语言SDK开发。
 官方的SDK主要有两个版本,Standalone和FreeRTOS,这一系列主要是使用Standalone SDK开发。(后续好像支持RTT了,还没试过)

二、配置开发环境

 嘉楠官方给出了VS Code改的kendryte ide,本人没尝试过,而且貌似官方也停止支持了。我使用的是VS Code搭配PlatformIO插件,这俩的安装过程就省略了;
 打开PlatformIO主页,在Boards页面搜索K210,在platform列找到kendryte k210并点进去,点击install安装等待即可;



三、点灯测试

1、新建工程

 返回PIO主页,点击New Project新建工程。Board选择自己使用的板卡,我使用的是maix dock,Framework选择Kendryte Standalone SDK,路径自行选择或默认路径即可,点击Finish创建工程;


2、敲代码

 在资源管理器页面找到打开(或自行新建)\src\main.c,参考sipeed官方给出的原理图写如下代码点灯;

#include <stdio.h>
#include <unistd.h>
#include "fpioa.h"
#include "gpio.h"

int main() {
  gpio_init();                             //初始化GPIO
  fpioa_set_function(13, FUNC_GPIO3);      //管脚映射
  gpio_set_drive_mode(3, GPIO_DM_OUTPUT);  //设置GPIO驱动模式
  gpio_set_pin(3, GPIO_PV_LOW);            //低电平
  while (1) {
    sleep(1);                              //延时1s
    printf("led on\r\n");                  //串口打印
    gpio_set_pin(3, GPIO_PV_LOW);
    sleep(1);
    printf("led off\r\n");
    gpio_set_pin(3, GPIO_PV_HIGH);
  }
  return 1;
}

3、编译烧录

 点击左下角的勾或按快捷键Ctrl+Alt+B编译,编译成功后将在终端显示SUCCESS;


 点击左下角的箭头或按快捷键Ctrl+Alt+U烧录,将在终端显示进度条,成功后显示SUCCESS;

 最后就可以看到板卡的灯闪烁起来了,打开串口监视器能看见打印信息;

附录

Github官方资料下载

CSDN资料下载

针对K210板子,你需要使用它的特定接口和库来实现硬件控制。K210通常使用STM32系列的硬件资源,并可能有相应的SDK或API供你调用。下面我将假设你已经有了相关的驱动和函数来控制电机和IO口。请注意,以下代码仅供参考,因为K210的具体细节可能会有所不同: ```c #include "stm32f4xx_hal.h" // STM32 HAL库 #include "k210_gpio.h" #include "k210_tcd_driver.h" #define GPIO_PIN_XMotors ... // 根据K210硬件配置填写电机GPIO针脚 #define GPIO_PIN_YMotors ... // 假设我们已经有一个电机控制结构体和相关函数 typedef struct MotorControl { GPIO_TypeDef* gpio_port; uint16_t gpio_pin; HAL_GPIO_InitTypeDef gpio_structure; bool is_moving; // 表示电机是否正在移动 } Motor; Motor motors[2]; // 针对上下两个电机 void motor_init() { for (int i = 0; i < 2; i++) { motors[i].gpio_port = GPIOA; // 假设使用GPIOA motors[i].gpio_pin = GPIO_PIN_XMotors + i * 2; // 上下电机占用相邻两个IO口 HAL_GPIO_Init(motors[i].gpio_port, &motors[i].gpio_structure); motors[i].is_moving = false; } } void control_motor(Motor* motor, enum MotorDirection dir, int position) { if (!motor->is_moving) { // 设置电机方向 HAL_GPIO_WritePin(motor->gpio_port, motor->gpio_pin, dir == MotorDirection_Up ? GPIO_PIN_SET : GPIO_PIN_RESET); // 开始电机运动,这里只是一个模拟,实际应配合中断处理和电机驱动 motor->is_moving = true; // 添加电机运动函数(如定时器中断控制电机速度) start_motorn(min(position, MAX_POSITION), motors[i]); } else { // 到达目标位置停止电机 stop_motor(); motor->is_moving = false; } } int main() { motor_init(); int tcd_fd = ...; // 打开TCD板设备文件 while (true) { read_TCD_board(tcd_fd); // ... (其他代码) int mid_position = calculate_middle(); // 控制电机 if (current_light_position != mid_position) { if (mid_position > current_light_position) { control_motor(&motors[0], MotorDirection_Up, mid_position); } else { control_motor(&motors[1], MotorDirection_Down, mid_position); } } ... (其他代码) } close(tcd_fd); return 0; } ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值