STM32 EC11 旋转编码器软件肖抖示例
这篇文章分享了一个用 STM32 单片机,实现的EC11旋转编码器消抖的例子。
例子已经上传 Gitee:EC11_DEMO: EC11 旋转编码器软件完美消抖例子。基于 STM3 平台。 (gitee.com)
该项目的所有代码都在 main.c 和 stm32f4xx_it.c 这两个文件中。
main.c 文件12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814 ...
npm 命令笔记
安装命令123npm install // 安装所有 package.json 中的包npm install package_namenpm install -g package_name
查看安装的包12345npm list // 查看项目包npm list -g // 查看全局包npm ls // 查看项目包npm ls -g // 查看全局包npm ls hexo // 查看指定包
查看服务器上的某个包
12npm view jquery versions // 查看所有版本npm view jquery version // 查看最新的版本
查看包的信息1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556$ npm info hexohexo@5.4.2 | MIT | deps: 22 | versions: 154A fast, simple & powerful blog framework, power ...
npm-check-updates nodejs 包升级插件的使用
npm-check-updates 是一个 nodejs 包更新管理的插件,该插件可以查询当前那些包可以更新,并提供了快速的更新方法。npm-check-updates - npm (npmjs.com)
安装 npm-check-updates1npm i -g npm-check-updates
检查当前项目123456789PS E:\zsf90.github.io> ncuChecking E:\zsf90.github.io\package.json[====================] 15/15 100% hexo-renderer-marked ^4.0.0 → ^5.0.0 hexo-renderer-pug ^2.0.0 → ^3.0.0 hexo-theme-butterfly ^4.0.1 → ^4.1.0 Run ncu -u to upgrade package.json
检查全局1234PS E:\zsf90.github.io> ncu -g[====================] 5/5 100%All ...
FreeRTOS 任务控制块 TCB
FreeRTOS 任务控制块TCB的定义:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899/* * Task control block. A task control block (TCB) is allocated for each task, * and stores task state information, including a pointer to the task's context * (the task's run time environment, including register values) */typedef struct tskTaskControlBlock /* The old na ...
FreeRTOS 链表
FreeRTOS中与链表相关的操作均在list.h和list.c这两个文件中实现,list.h第一次使用需要在include文件夹下面新建然后添 加到工程freertos/source这个组文件,list.c第一次使用需要在freertos文件夹下面新建然后添加到工程freertos/source这个 组文件。
FreeRTOS 链表的定义:123456789struct xLIST_ITEM{ TickType_t xItemValue; /* 辅助值,用于帮助节点做顺序排列 */(1) struct xLIST_ITEM * pxNext; /* 指向链表下一个节点 */(2) struct xLIST_ITEM * pxPrevious; /* 指向链表前一个节点 */(3) void * pvOwner; /* 指向拥有该节点的内核对象,通常是TCB */(4) void * pvContainer; /* 指向该节点所在的链表 * ...
FreeRTOS 命名规则
这篇文章用来记录 FreeRTOS 的命名规则。
1. 数据类型
在 FreeRTOS 中,使用的数据类型虽然都是标准 C 里面的数据类型,但是针对不同的处理器,对标准 C 的数据类型又进行了重定义,给它们取了一个新的名字,比如 char 重新定义了一个名字 portCHAR,这里面的 port 表示接口的意思,就是 FreeRTOS 要移植到这些处理器上需要这些接口文件来把它们连接在一起。但是用户在写程序的时候并非一定要遵循 FreeRTOS 的风格,我们还是可以直接用 C 语言的标准类型。在FreeRTOS 中,int 型从不使用,只使用 short 和 long 型。在 Cortex-M 内核的 MCU 中,short 为 16 位,long 为 32 位。
FreeRTOS 中详细的数据类型重定义在 portmacro.h 这个头文件中实现,具体汇总见表FreeRTOS 中的数据类型重定义 和代码清单:FreeRTOS 中的数据类型重定义。
新定义的数据类型实际的
实际的数据类型(C 标准类型
portCHAR
char
portSHORT
short
...
FreeRTOS 函数列表
vTaskDelay(); // 延时
vTaskDelete(); // 删除任务
vTaskSuspend(); // 挂起任务
vTaskList(); // 获取任务列表,参数为一个字符指针 char *pcWriteBuffer
xTaskGetHandle(); // 得到任务句柄
xTaskGetCurrentTaskHandle(); // 得到当前任务句柄
pcTaskGetName(); // 得到任务名称
eTaskGetState(); // 得到任务状态 e 代表返回类型为 enmu
uxTaskGetNumberOfTasks(); // 得到任务数量,包括各种状态的。
xTaskGetTickCount(); // 返回调用启动任务调度器一来的时钟节拍数
xTaskGetTickCountFromISR() //
Queue 相关
xQ ...
FreeRTOS 创建任务
先来看一个FreeRTOS 函数把,这个函数是 xTaskCreate()。函数原型:
12345678BaseType_t xTaskCreate( TaskFunction_t pxTaskCode, // 要执行的任务函数 const char * const pcName, // 任务名称 const configSTACK_DEPTH_TYPE usStackDepth, // 任务堆栈大小 void * const pvParameters, UBaseType_t uxPriority, // 任务优先级,在FreeRTOSConfig.h 中配置configMAX_PRIORITIES TaskHandle_t * const pxCreatedTask // 任务句柄);
创建任务的目的是让 FreeRTOS 帮我们管理创建的各个任务,这些任务会伴随着多种状态和动作。如:任务的创建、删除、挂起、恢复和调度。
任务的创建分为静态创建和动态创建,分别使用函数 xTaskCreateStatic() 和 xTaskCreate() ...
FreeRTOS 移植
FreeRTOS 移植至 GD32平台。我们这里只用 FreeRTOS 中的内容,其他的暂时用不到。移植 FreeRTOS 其实就是把 相关的 FreeRTOS 文件复制到自己的工程中然后加进自己的工程。
在 FreeRTOS 目录下又分为几个目录,最重要的就是 Source 源代码目录:
Source目录内容:
include 目录:
portable 目录:
MemMang 目录:
RVDS 目录:根据硬件平台选择需要的。
FreeRTOSConfig.h 文件FreeRTOSConfig.h 文件可以到 Demo 示例项目中找到,复制到自己的项目,在此基础之上进行修改就行。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889/* * FreeRTOS V202112.00 * Copyri ...