G4 COMP_HandleTypeDef hcomp1; void COMP1_Init(void) { hcomp1.Instance = COMP1; hcomp1.Init.InputPlus = COMP_INPUT_PLUS_IO1; // 比较器[+]输入端
时钟中断 硬件有一个时钟装置,该装置每隔一定时间发出一个时钟中断(称为一次时钟嘀嗒(tick)),对应的中断处理程序就将全局变量jiffies_64加1 jiffies_64 是一个全局64位整型, jiffies全局变量为其低32位的全局变量,程序中一般用jiffies HZ:可配置的宏,表示1秒
线程控制块 PCB,记录线程的数据。 struct rt_thread { /* rt 对象 */ char name[RT_NAME_MAX]; /* 线程名字 */ rt_uint8_t type; /* 对象类型 */ rt_uint8_t flags; /* 标注位 */ rt
中断管理 为了把操作系统和系统底层的异常、中断硬件隔离开来,RT-Thread 把中断和异常封装为一组抽象接口,如下图所示: rt_interrupt_enter() 和 rt_interrupt_leave():用于在中断服务程序进入和离开时通知内核中断上下文的切换。 <
数据传递 邮箱 特性: 每封邮件固定为 4 字节, 可以直接传输 32 位无符号数 恰好能容纳一个指针,可传递指向缓冲区的地址。但是不能显式的指定数据的长度,在使用的时候一定要注意越界的问题。 多个线程可等待同一个邮箱。
时钟节拍 时钟节拍在 rtconfig.h 中设置 /* *频率是 1000HZ 周期是 1/1000 s *所以节拍是 1ms */ #define RT_TICK_PER_SECOND 1000 给 RT-Thread 提供时钟节拍: void SysTick_Handler(void) {
软件定时器,单位为时钟节拍,定时数值必须是 OS Tick 的整数倍。 定时器控制块: struct rt_timer { struct rt_object parent; rt_list_t row[RT_TIMER_SKIP_LIST_LEVEL]; /* 定时器链表节点 */
STM32 内存布局验证: #include "main.h" #include <string.h> //用于字符串处理 #include <stdio.h> //用于printf打印 #include <stdlib.h> //用于分配堆区---调用malloc和free #
36 章,1245 MCPWM 结构 ESP32-S3 有两个 MCPWM 外设,每个外设支持 6 路 PWM 输出。 由 PWM 定时器模块、PWM 操作器模块、故障检测模块、捕获模块组成,PWM 定时器用于生成定时参考,PWM 操作器将根据定时参考生成所需的波形。 PWM 定时器和 PWM 操作
错误 typedef int esp_err_t; ESP_OK //esp_err_t value indicating success (no error) //表示执行成功 没有错误 ESP_FAIL //Generic esp_err_t code indicating failure /
时钟树 - ESP32 - — ESP-IDF 编程指南 v5.5 文档 系统时钟 时钟树: 图中,黄框的为低功耗时钟,蓝框的为高性能时钟。 CPU_CLK 时钟频率最低 2 MHz,最高 240 MHz,。
手册第35章,1231 LED PWM 控制器 - ESP32-S3 - — ESP-IDF 编程指南 v5.5 文档 LED 控制器 (LEDC) 主要用于控制 LED,也可产生 PWM 信号用于其他设备的控制。 S3 LEDC 特点: 8 个PWM生成器,即8通道。 高速通道:四个独立的定时器,