RT-Thread
RT-Thread
tyustli
不抛弃,不放弃
展开
-
RT-Thread--内存测试命令
#define MALLOC_SIZE (1024)int malloc_test(void){ int i = 0; char *malloc_buf; char *temp_buf; for(i = 0; i < 1024 * 1024; i++) { malloc_buf = (char *)rt_malloc(MALLOC_SIZE); temp_buf = malloc_buf;原创 2021-02-22 09:41:42 · 523 阅读 · 0 评论 -
RT-Thread--设备(ADC)
#define ADC_DEV_NAME "adc1" #define ADC_DEV_CHANNEL 13 #define REFER_VOLTAGE 330 #define CONVERT_BITS (1 << 12) static int adc_vol_sample(int argc, char *argv[]){ rt_...原创 2019-04-26 20:18:55 · 1617 阅读 · 0 评论 -
RT-Thread--设备(IWDG)
#define IWDG_DEVICE_NAME "wdt" /*wdt device name*/static rt_device_t wdg_dev; /*wdt device pointer*/static void idle_hook(void){ rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_KEEPALIVE...原创 2019-04-23 09:00:42 · 756 阅读 · 0 评论 -
RT-Thread-设备(PMW)
#define PWM_DEV_NAME "pwm2" /* PWM设备名称 */#define PWM_DEV_CHANNEL 3 /* PWM通道 */#define THREAD_PRIORITY 25 /* 线程优先级 */#define THREAD_STACK_SIZE 512 /...原创 2019-04-30 14:04:52 · 539 阅读 · 0 评论 -
RT-Thread-设备(fal)
准备工作:#include "fal.h"fal_init();int test(void){ int len; rt_uint8_t i; rt_uint8_t write_buf[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; rt_uint8_t read_buf[10] = {0}; const str...原创 2019-08-20 20:30:45 · 569 阅读 · 0 评论 -
RT-Thread--设备(RTC设备)
static int rtc_sample(int argc, char *argv[]){ rt_err_t ret = RT_EOK; time_t now; /* set data */ ret = set_date(2018, 12, 3); if (ret != RT_EOK) { rt_kprintf("set RT...原创 2019-04-23 08:59:31 · 1631 阅读 · 1 评论 -
RT-Thread-设备(MPU6050)
#include <rtdevice.h>#include "mpu6xxx.h"/* defined the LED pin: GPIO1_IO9 */#define LED0_PIN 9struct mpu6xxx_device *device;struct mpu6xxx_3axes *gyro;int main(void){ ...原创 2019-04-30 15:31:19 · 1290 阅读 · 1 评论 -
RT-Thread--设备(I2C设备)
/*find slave i2c device address*/static rt_device_t _i2c_find(const char *name){ rt_device_t dev; dev = rt_device_find(name); if (!dev) { rt_kprintf("search device failed: ...原创 2019-04-23 08:57:42 · 1581 阅读 · 0 评论 -
RT-Thread--设备(HWTIMER)
#define HWTIMER_DEV_NAME "gpt2" static rt_err_t timeout_cb(rt_device_t dev, rt_size_t size) { rt_kprintf("this is %s hwtimer timeout callback fucntion!\n", HWTIMER_DEV_NAME); rt_kprintf("...原创 2019-04-23 09:02:13 · 1417 阅读 · 0 评论 -
RT-Thread--LCD 驱动程序模板
RT-Thread 中 LCD 设备被注册为图形设备,其驱动模板如下/* * Copyright (c) 2006-2020, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2021-02-22 tyustli first version */#include "rtcon原创 2021-02-22 21:44:20 · 2671 阅读 · 10 评论 -
RT-Thread--emmc 块设备对接及文件系统挂载
EMMC 对接块设备驱动及挂载文件系统步骤EMMC 驱动对接块设备驱动挂载文件系统对接块设备驱动修改 Kconfig 文件修改 SConscript 文件添加 emmc 驱动源码(drv_emmc.c 和 drv_emmc.h)Kconfig 文件修改当前驱动配置文件的 Kconfig,使 emmc 驱动可选的加入工程,例如楼主的配置文件为 temp/project/board/Kconfig添加如下内容menuconfig BSP_USING_EMMC bool "E原创 2022-03-23 21:15:00 · 2726 阅读 · 0 评论 -
RT-Thread--外部 flash作 U 盘
片外 flash作 U 盘打开 USB Device打开大容量支持,块设备名称为 flash0代码int main(int argc, char *argv[]){ __HAL_RCC_GPIOB_CLK_ENABLE(); rt_hw_spi_device_attach("spi1", "spi10", GPIOB, GPIO_PIN_14); if (RT_...原创 2020-04-28 18:32:01 · 1302 阅读 · 1 评论 -
RT-Thread--片上 flash挂载 Fatfs 文件系统
片上 Flahs 挂载 Fatfs 文件系统平台 stm32l475-atk-pandora使能片上 flash使能 fal 软件包使能 mtd打开文件系统Maxium sector size to be handled 需要根据实际情况进行设置,这里设置为 4096。fal_cfg.h/* * Copyright (c) 2006-2018, RT-Thread De...原创 2020-04-28 11:24:04 · 2624 阅读 · 1 评论 -
RT-Thread--外部 flash 挂载 fatfs 文件系统
外部 flash 挂载 fatfs 文件系统/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2020-04-28 tyu...原创 2020-04-28 17:49:20 · 1494 阅读 · 0 评论 -
RT-Thread--片上 flash作 U 盘
片上 Flahs 作 U 盘平台 stm32l475-atk-pandora使能片上 flash使能 fal 软件包使能 mtdUSB Device使能大容量设备fal_cfg.h/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: Apache-...原创 2020-04-28 12:54:34 · 1379 阅读 · 2 评论 -
RT-Thread--片上 flash挂载 littlefs 文件系统
片上 Flahs 挂载 littlefs 文件系统平台 stm32l475-atk-pandora使能片上 flash使能 fal 软件包使能 mtd打开文件系统使能 littlefsfal_cfg.h/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifi...原创 2020-04-28 11:43:25 · 3193 阅读 · 0 评论 -
RT-Thread--外部 flash 挂载 littlefs 文件系统
外部 flash 挂载 littlefs 文件系统打开 fal 软件包打开 littlefs 软件包打开文件系统打开 MTDfal_cfg.h/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * D...原创 2020-04-28 18:53:56 · 2686 阅读 · 0 评论 -
RT-Thread内核-- Cortex-M 临界段代码保护
临界段用一句话概括就是一段在执行的时候不能被中断的代码段。那么什么情况下临界段会被打断?一个是系统调度,还有一个就是外部中断。在RT-Thread,系统调度,最终也是产生PendSV中断,在PendSV Handler里面实现线程的切换,所以还是可以归结为中断。 既然这样,RT-Thread对临界段的保护就处理的很干脆了,直接把中断全部关了,NMI FAULT和硬FAULT除外。为了快速地关...原创 2019-03-07 16:57:42 · 879 阅读 · 0 评论 -
RT-Thread 自动初始化机制详解
RT-Thread 自动初始化机制详解案例引入一般初始化嵌入式开发在初始化某个外设的时候大部分都是以下这种形式int main(int argc, char *argv[]){ clk_init(); led_init(); beep_init(); key_init(); ..... while(1) { ......原创 2020-03-10 14:57:58 · 1419 阅读 · 0 评论 -
RT-Thread--RGB565LCD测试程序
/* * Copyright (c) 2006-2020, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2021-02-01 tyustli first version */#include "rtconfig.h"#include "board.h"#ifdef PKG_原创 2021-02-22 09:44:31 · 731 阅读 · 0 评论 -
RT-Thread--连接脚本(SENTION 一)
/* Define output sections * ‘SECTIONS’ 假设你的程序只有代码节, 初始化过的数据节, 和未初始化过的数据节. 这些会存在于’.text’,’.data’和’.bss’节, * 另外, 让我们进一步假设在你的输入文件中只有这些节. * 下面这个例子中代码应当被载入到地址’0x10000’处, 而数据应当从0x8000000处开始 SECTIONS...原创 2019-05-07 23:02:20 · 541 阅读 · 0 评论 -
RT-Thread--连接脚本(MEMORY)
Memory LayoutThe linker's default configuration permits allocation of all available memory. You can override this configuration by using theMEMORY command. TheMEMORYcommand describes the location...原创 2019-05-07 22:48:27 · 846 阅读 · 1 评论 -
RT-Thread-连接脚本(ENTRY)
/* Entry Point * 在运行一个程序时第一个被执行到的指令称为"入口点". 你可以使用'ENTRY'连接脚本命令来设置入口点.参数是一个符号名: ENTRY(SYMBOL) * 有多种不同的方法来设置入口点.连接器会通过按顺序尝试以下的方法来设置入口点, 如果成功了,就会停止. * `-e'入口命令行选项; * 连接脚本中的`ENTRY(SYMBOL)'命令; *...原创 2019-05-07 22:54:26 · 447 阅读 · 0 评论 -
内核移植(七)--线程切换
;/*; * void rt_hw_context_switch(rt_uint32 from, rt_uint32 to);; * 当一个汇编函数在C文件中调用的时候,如果有两个形参,则执行的时候会将这两个形参分别传入到CPU寄存器r0和r1中; * r0 --> from; * r1 --> to;* yes: 将参数 to 保存到 rt_interrupt原创 2020-09-12 11:52:20 · 228 阅读 · 0 评论 -
内核移植(六)--中断处理
中断处理 PendSV_Handler 函数PendSV_Handler() 函数是真正实现线程上下文切换的地方PendSV_Handler PROC ;PROC 定义子程序的开始 EXPORT PendSV_Handler ;声明一个标号具有全局属性 ;失能中断,为了保护上下文切换不被中断 MRS r2, PRIMASK原创 2020-09-12 00:04:31 · 716 阅读 · 0 评论 -
内核移植(五)--无来源线程切换
无来源线程切换;/*; * void rt_hw_context_switch_to(rt_uint32 to);; *当一个汇编函数在C语言文件中调用的时候, 如果有一个形参,则执行的时候会将这个形参传入CPU寄存器r0,; *如果有两个形参,第二个则传入到r1。; * r0 --> to; * this fucntion is used to perform the first thread switch ; * 第一次线程切换 rthw.h中声明 ;; rt_hw_contex原创 2020-09-11 23:42:49 · 148 阅读 · 0 评论 -
内核移植(二)--armcc 汇编基础
armcc 汇编基础armcc 汇编中常用的符号EQU作用与 C 语言中 #define 类似SCB_VTOR EQU 0xE000ED08 ; Vector Table Offset Register 向量表偏移寄存器NVIC_INT_CTRL EQU 0xE000ED04 ; interrupt control state register 中断控制状态寄存器NVIC_SYSPR原创 2020-09-11 23:19:44 · 696 阅读 · 0 评论 -
双向链表(二)--双向链表初始化的宏 RT_LIST_OBJECT_INIT
1、定义#define RT_LIST_OBJECT_INIT(object) { &(object), &(object) }2、作用RT_LIST_OBJECT_INIT用于初始化一个双向链表,使双向链表的前一个节点和后一个节点的指针均指向自己。3、示例程序#include <stdio.h>/** * @brief initial...原创 2020-01-10 14:31:06 · 636 阅读 · 0 评论 -
双向链表(一)--双向链表操作函数
#define rt_inline static __inline1、双向链表的结构体定义/*** Double List structure*/struct rt_list_node{ struct rt_list_node *next; /**< point to n...原创 2019-03-06 14:08:53 · 1230 阅读 · 0 评论 -
单向链表(一)--单向链表操作函数
1、单向链表的结构体定义/** * Single List structure 单链表结构体 */struct rt_slist_node{ struct rt_slist_node *next; /**< point to next node. 指向下一个节点 */};typedef struct rt_slist_node rt_slis...原创 2020-01-12 19:24:11 · 899 阅读 · 0 评论 -
RT-Thread--宏 RT_OBJECT_HOOK_CALL
RT-Thread 中的宏 RT_OBJECT_HOOK_CALL原型#define RT_OBJECT_HOOK_CALL(func, argv) \ do { if ((func) != RT_NULL) func argv; } while (0)调用示例RT_OBJECT_HOOK_CALL(rt_object_attach_hook, (object));解析do { if ((func) != RT_NULL) func argv; } while (0)乍一看这个语原创 2021-02-25 08:30:18 · 1203 阅读 · 3 评论 -
RT-Thread内核-rt_list_for_each
1、原型/** * rt_list_for_each - iterate over a list * @pos: the rt_list_t * to use as a loop cursor. * @head: the head for your list. */#define rt_list_for_each(pos, head) \ for (pos = (head)...原创 2020-01-12 19:48:57 · 765 阅读 · 0 评论 -
RT-Thread内核-__rt_ffs函数
1、原型int __rt_ffs(int value)2、作用用于找到参数 value 用二进制表示时,第一个被置 1 的位的索引3、示例程序#include <stdio.h>const unsigned char __lowest_bit_bitmap[] ={ /* 00 */ 0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1...原创 2020-01-12 16:13:10 · 1229 阅读 · 0 评论