IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> Cubeide新建RT-thread(3.1.5)工程记录 -> 正文阅读

[嵌入式]Cubeide新建RT-thread(3.1.5)工程记录

cubeide版本1.8,rt-thread版本3.1.5,实验平台正点原子精英板(F103ZET6)

声明;本文参考了rt-thread官方教程以及一些博主的记录,仅供学习记录使用,方便以后查阅。

1、准备rt-thread包

进入包管理页面,选择网络获取,之后输入网址
在这里插入图片描述

https://www.rt-thread.org/download/cube/RealThread.RT-Thread.pdsc

2、添加包

在这里插入图片描述
三个都勾上即可
在这里插入图片描述

可见多出如下选项
在这里插入图片描述
这里选择内核版本,其他参数默认,我大概看了下其他参数,跟官方说的影响不大
在这里插入图片描述
之后常规操作一下,就是建立一个带串口1和led的工程
在这里插入图片描述
取消使用一些中断,这些中断在rt-thread里面被复用了
具体为 HardFault_Handler、PendSV_Handler、SysTick_Handler 中断
在这里插入图片描述

后面选择好时钟以及debug就可以生成代码了
在这里插入图片描述

3、修改代码

直接编译会报错,因此需要修改代码

首先是看一下这个目录
在这里插入图片描述
因为我之前一直这里报错,不知道啥原因,他自己定义了一个串口二的初始化函数,然后还有重定向输入输出,但是一直报错,干脆就给他删掉重写一个就完事了

删掉串口定义和输入输出函数,在main.c中添加(末尾处添加即可)

char rt_hw_console_getchar(void)
{
    int ch = -1;
    if (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_RXNE) != RESET)
    {
        ch = huart1.Instance->DR & 0xff;
    }
    else
    {
        if (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_ORE) != RESET)
        {
            __HAL_UART_CLEAR_OREFLAG(&huart1);
        }
        rt_thread_mdelay(10);
    }
    return ch;
}
void rt_hw_console_output(const char *str)
{
    rt_size_t i = 0, size = 0;
    char a = '\r';
    __HAL_UNLOCK(&huart1);
    size = rt_strlen(str);
    for (i = 0; i < size; i++)
    {
        if (*(str + i) == '\n')
        {
            ITM_SendChar(a);
            HAL_UART_Transmit(&huart1, (uint8_t *)&a, 1, 1);
        }
        HAL_UART_Transmit(&huart1, (uint8_t *)(str + i), 1, 1);
    }
}

下面需要修改下启动文件
在这里插入图片描述
注释bl main,替换为bl entry
在这里插入图片描述

4、编写rt-thread线程

新建一个rtthread_test.c文件,加入下面代码

#include "rtthread.h"
#include "main.h"
#include "stdio.h"


static struct rt_thread led_thread;
static char led_thread_stack[256];

static void led_thread_entry(void *parameter);

int MX_RT_Thread_Init(void)
{
    //初始化线程
    rt_err_t rst;
    rst = rt_thread_init(&led_thread,
                         (const char *)"ledtest", /* 线程名字 */
                         led_thread_entry,         /* 线程入口函数 */
                         RT_NULL,                  /* 线程入口函数参数 */
                         &led_thread_stack[0],
                         sizeof(led_thread_stack),   /* 线程栈大小 */
                         RT_THREAD_PRIORITY_MAX - 2, /* 线程的优先级 */
                         20);                        /* 线程时间片 */
    if (rst == RT_EOK)
    {
        rt_thread_startup(&led_thread); //创建线程
    }
    return 0;
}


static void led_thread_entry(void *parameter)
{
    while (1)
    {
        rt_kprintf("rt-thread_test\r\n");
        HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_5);
        rt_thread_mdelay(1000);
    }
}

线程含义参数理解

在下面官网文档可以获取

https://www.rt-thread.org/document/api/group___thread.html#gacd985aa60939b95e510f144610f001b9

如下图所示

main.c中引入

#include "rtthread.h"
extern int MX_RT_Thread_Init(void);

初始化引入

  MX_RT_Thread_Init();

while循环中引入

  	HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_5);
  	rt_kprintf("mian_test\r\n");
  	rt_thread_mdelay(500);

结果如下
在这里插入图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-01-17 11:38:55  更:2022-01-17 11:40:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 12:51:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码