【HEXO】[01]HEXO常用命令
hexo远程发布
1hexo clean && hexo g && hexo d
新建md文件
1hexo n "name"
【蓝桥杯单片机】程序模板设计
前言
为了确保程序的准确性,总结了以下要点
保证程序逻辑正确,其次再是“基于现象上”的正确,保证程序不会出现隐性问题
在逻辑正确的前提下,保证数据读取的实时性,尽量优化代码执行效率
对数据的处理,在确保程序完全正常运行的前提下,最大限度地提高内存空间的利用率
编写程序时,先写主框架,验证逻辑后,再依次验证其他模块
数码管/LED模块工作原理
例如:数码管的段选/位选输出由两个74HC573锁存器控制
锁存器送出数据的过程
P0输出8位数据
锁存器不使能,Q0~Q7为之前的数据,D0 ~ D7等待被送出
锁存器使能,数据送出,Q0~Q7即为P00 ~ P07的信号
注意:OE此处默认接GND
**如何控制锁存器送出数据的顺序/使锁存器单个送出数据? **
由一个或非门(U25)的四个输出控制四个锁存器的输入使能信号(Y7C~Y4C)
或非门的输入Y7 ~ Y4由一个译码器的输出控制,或非门的一端WR默认为低电平,那么这里的或非门就相当于一个输入为Y(n)的非门
其中74HC138(U24)的输入为P2口的P27~P25
通过推导可知,P27 ~ P ...
【C语言入门学习】[1]初识C语言 01
【C语言入门学习】[1]初识C语言 01
2024.1.9更新
2024.2.20更新
#前言
什么是C语言?
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
ANSI C,作为C语言最初的标准
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C
C语言介于机器语言和高级语言之间
一、基本概念
一、c语言的基本框架
main函数是程序的入口
return 0;函数正常运行结束时返回0
二、c语言的数据类型
char //字符数据类型
short //短整型
int //整形
long //长整型
long long // ...
【Markdown】数学公式入门
E=mc2E=mc^2E=mc2
∑i=0ni2=(n2+n)(2n+1)6\sum_ {i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6}
i=0∑ni2=6(n2+n)(2n+1)
参考文章:如何优雅地在Markdown中输入数学公式 - 不爱喝橙子汁的橙子 - 博客园
【卡尔曼滤波】[1]理论基础入门
1. 状态空间表达式
Wk:过程噪声
Vk:观测噪声
2. 系统框图
3. 高斯分布
卡尔曼滤波的噪声分布为高斯分布
4
Wk,Q k的定义:
举个栗子:
一辆以大约5m/s行驶的小车,收到各种阻力的影响,运动速度为 V+Vr
实际速度为:5+ δ (m/s)
Wk = δ m/s
δ ∈ N(0;1)的高斯分布,Qk = 1
4. 协方差
Δ11就是cov(x1,x2)的简化形式
二维协方差
二维协方差(或称为协方差矩阵)是一个扩展了标准协方差概念的工具,适用于多维数据,特别是用于描述两个或更多变量之间的关系。在二维情况下,协方差矩阵可以用于表示两个随机变量 (X) 和 (Y) 的联合分布中的协方差。
协方差矩阵的表示
对于二维数据 ((X, Y)),协方差矩阵表示为:
其中:
Cov(X,X)Cov(X, X)Cov(X,X) 是 (X) 的方差,表示 (X) 自身的波动程度。
Cov(Y,Y)Cov(Y, Y)Cov(Y,Y) 是 (Y) 的方差,表示 (Y) 自身的波动程度。
Cov(X,Y)Cov(X, Y)Cov(X,Y) 是 (X) 和 (Y) ...
【stm32单片机】[操作系统][RT-Thread][3]线程通信
邮箱
邮箱的字节数固定为4个字节。
紧急消息
动态和静态分配
操作系统中动态分配和静态分配的区别
1. 动态分配
动态分配在堆里面,优点是能够灵活分配内存,能够在程序运行中进行内存申请
2. 静态分配
分配在栈里面,编译时就会分配好内存
示例
12/* 创建一个容量为4的邮箱 */mb = rt_mb_create("mb", 4, RT_IPC_FLAG_PRIO);
容量是什么?
容量是邮件的个数,容量是4,表示同时能发送四份邮件。
创建容量为4的邮箱,在堆中会申请4x4Byte的空间。
邮箱代码例程
rt_mb_recv(mb, (rt_uint32_t*)&msg, RT_WAITING_FOREVER); // 接收邮件
这里RT_WAITING_FOREVER表示阻塞式等待
改成RT_WAITING_NO则表示非阻塞式等待
12345678910111213141516171819202122232425262728293031323334353637#include <rtthread.h>/* 创建邮箱 */rt_mailbox_ ...
【stm32单片机】[操作系统][RT-Thread][2]线程同步
RT-Thread Shell
RT-Thread定时器
软定时器:在系统线程timer中执行,通过shell可以查看到系统默认开启了一个timer进程
硬定时器:回调函数在中断上下文中执行
1. 定时器的创建过程
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950/* * Copyright (c) 2006-2024, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2024-10-17 RT-Thread first version */#include <rtthread.h>static rt_thread_t timer1; //定义定时器static rt_thread_t timer2;//定义超时回调函数s ...
【stm32单片机】[操作系统][RT-Thread][1]内核与线程
裸机开发与操作系统的区别
裸机开发
单一任务(阻塞式)
手动分配资源
缺乏抽象层
灵活性、实时性较高
操作系统
多任务调度
自动资源管理
硬件抽象层
RT-Thread的线程
线程的概念
在RT-thread中,线程是最小的工作单元。每个线程负责一个任务。RT-Thread根据线程的优先级决定哪个任务先完成.。
RT-Thread 支持多达 256 个优先级。0是最高的优先级。
线程的组成部分
线程控制块:线程的名字,线程要执行的任务,线程的优先级,线程的状态
线程栈:保存临时数据
入口函数:线程的任务内容
线程的状态
线程有五种工作状态:
初始状态:线程创建还未使用
就绪状态:线程准备好,但是没有拿到资源
运行状态:线程正在执行任务,占用CPU
挂起状态:线程暂时停止工作
关闭状态:线程的任务完成了,线程结束,不再使用
线程的优先级
RT-Thread支持256个优先级
时间片
时间片是线程允许工作的时间。如果多个线程的优先级相同,则根据”时间片“,执行完任务A后再执行任务B,轮询进行。
RT-Thread工程
RT-Thread项目创建
RT ...
【嵌入式】[Keil5使用技巧][1]Debug使用
2024.10.16:本博客将长期维护优化
一、参考文章
Keil5软件使用-进阶调试篇_keil调试教程-CSDN博客
keil5软件仿真波形以及出现unknown signal的解决方法_unknown signal.-CSDN博客