0、引言
本系列博客仅作为本人学习K210单片机的学习记录,主要学习其内部资源使用,作为初学者难免有错误之处,如有发现还望指出。
硬件:Sipeed Maix Dock开发板(推荐官方KD233开发板)
软件:Kendryte IDE(基于VS Code 开发)
文档:
Kendryte IDE使用手册
Standalone SDK编程指南
芯片技术规格书
SDK:
Kendryte SDK
MaixPy/drive
1、UART——interrupt
以下代码为官方代码库“kendryte_uart-interrupt-standalone”修改而成,实现的功能为将电脑发送的字符串,在中断回调函数中存入缓存v_buf中,字符串接收完成后,再将v_buf中的数据上传回电脑。管脚配置如下所示
main.c
#include <fpioa.h>
#include <gpio.h>
#include <stdio.h>
#include <string.h>
#include <sysctl.h>
#include <uart.h>
//UART_NUM位于uart.h中 ,用于定义所使用的串口号
//#define UART_NUM UART_DEVICE_3
uint32_t v_uart_num = UART_NUM;
//打印字符串,通过指针
void uart_print(const char const *str) {
uart_send_data(UART_NUM, str, strlen(str));
}
//发送中断回调函数(想不到用途)
int on_uart_send(void *ctx) {
uint8_t v_uart = *((uint32_t *)ctx) + 1 + 0x30;
//注销中断函数,保证该功能单次使用,否则会陷入局部死循环。
uart_irq_unregister(UART_NUM, UART_SEND);
uart_print("Send ok Uart\n"); //测试用
uart_send_data(UART_NUM, (char *)&v_uart, 1); //标准发送程序,位于uart.c
return 0;
}
int main() {
plic_init();//中断初始化
sysctl_enable_irq();//开启系统中断
uart_init(UART_NUM); //初始化配置串口。通道3
uart_configure(UART_NUM, 115200, 8, UART_STOP_1, UART_PARITY_NONE);
//接收中断或 DMA 触发 FIFO 深度,当 FIFO 中的数据大于等于该值时触发中断或 DMA传输。
uart_set_receive