1.7k 2 分钟

FreeRTOS 官网:https://www.freertos.org/index.html # V9.0.0 源码版本获取 1、官方托管在 SVN 的源代码链接:https://sourceforge.net/projects/freertos/files/FreeRTOS/ 2、官方托管在 GitHub 的源代码链接:https://github.com/FreeRTOS/FreeRTOS 这里使用 V9.0.0 版本,包括之后都是以 V9.0.0 版本为参考,不要问我为什么,哪个版本成熟稳定用那个。 # 文件分类 FreeRTOSv9.0.0 │ ├─ New - Direct...
5.3k 5 分钟

# 内存大小问题 有时候,我们在不同的编译环境,或者不同的机子上测试编译,会呈现不同的结果,于是我们会陷入疑问,内存的大小是谁分配的呢? 在系统中,系统对内存的识别是以 Byte(字节)为单位,每个字节由 8 位二进制数组成,即 8bit(比特,也称 “位” )。按照计算机的二进制方式,1Byte = 8bit;1KB = 1024Byte;1MB = 1024KB;1GB = 1024MB;1TB = 1024GB。 我们都知道 Byte(字节)的大小是固定的,但是,我们目前接触的都是以...
6.6k 7 分钟

前排声明一下,本篇是在学习 typedef 高级应用的时候发现对于指针的应用有很多不熟,然后查看了好多资料(参考链接在后面),于是又重新复习了一遍,并把它以自己通俗的语言整理出来,可能会有炒鸡多的不对,内容多来自书本和网络,希望各方大佬进行指正;同样的,在看这篇文章之前,不可全信,请务必持怀疑的态度去思考(我也不敢打保单一定是正确的,毕竟我也在学习中) 指针这东西,讨人喜爱的同时也惹人烦恼,反正对我而言,谈起指针就脑壳疼,所以别在我面前谈它,不然出来打一架;哈哈哈,开玩笑的 #...
4.8k 5 分钟

TTL、RS-232、RS422、RS-485 是指的电平标准(电信号),很多人把 RS-232、RS-422、RS-485 误称为通讯协议,这是很不应该的,其实它们仅是关于 UART 通讯的一个机械和电气接口标准(顶多是网络协议中的物理层面);也就是说对 MCU 等控制器编写了 UART 程序,串行数据会通过硬件电路在设备间进行收发,这个硬件电路要遵循一个电平标准,实现设备间的交互。 # 前言 要了解逻辑电平的内容,首先要知道以下几个概念的含义: 输入高电平(VIH):保证逻辑门的输入为高电平时所允许的最小输入高电平,当输入电平高于 VIH...
2.8k 3 分钟

DMX512(digital multiplex) 其实就是主机向从机整包单向广播发送的协议(protocol),从机自取所需。 DMX512 数据协议是美国舞台灯光协会(USITT)于 1990 年发布的一种灯光控制器与灯具设备进行数据传输的标准。它包括电气特性,数据协议,数据格式等方面的内容。 512 协议规定使用的波特率是 250Kbps # 链接拓扑(network topology) 根据后面的协议可以知道,其实就是将所有的 slave 挂到线上去。(线最长可以多长?) # 协议(protocol)时序 1) 先说明地址,包的格式是固定的,第一个数据帧就是地址 1(说是 0...
14k 14 分钟

参考链接: 跟我一起写 Makefile — 跟我一起写 Makefile 1.0 文档 Makefile 简明教程 - FanZheng's blog https://hacker-yhj.github.io/resources/gun_make.pdf 在使用 gcc 编译器开发的时候,会用到 Makefile,那么,就来记录一下 Makefile...
1.7k 2 分钟

如何利用单片机的 ADC 模块(或者独立的 ADC 芯片)得到接入 ADC 管脚上的实际电压值? 这个问题,是第一次接触 ADC 时候,大家都会遇到的问题。 单片机会读到什么值? 需要看一个特性,就是几位的 ADC,在手册上就会给出,例如,STM32 的 ADC 是 12 位的。另外,还有 8 位,10 位,16 位,24 位等。 我先告诉你答案:STM32 读到的 ADC 值,是从 0 到 4095,当你把 ADC 引脚接了 GND,读到的就是 0,当你把 ADC 引脚接了 VDD,读到的就是 4095。 接下来告诉你为什么:前面提到,STM32 的 ADC 是 12 位的,我们知道,8...
4k 4 分钟

首先说明一下,== 单个按键直接用字母表示;组合键(是指先按住第一个键不放,然后按下第二个键,再放开这两个键。)则用 “+” 表示;多次按键(是指先按下第一个键并放开,然后按下第二个键并放开,以此类推。)则用 “ - ” 表示。 (以下快捷键只列出一些个人常用的,至于 Ctrl + C/ V 这些熟悉的快捷键以及不怎么用的就不一一罗列出来了,需要的可以到下面链接自个查询) 这个是在百度文库里面列出来的 最全 Altium Designer 快捷键 当然你也可以直接在 AD 软件里面查看,教程:Altium Designer 查看所有快捷键,图文教程 # 原理图快捷键 1:按住 Shift...
4.2k 4 分钟

# UART / USART # 基本方式 基本方式分并行通讯和串行通讯 # 并行通讯 并行通讯是指数据的每一位同时在多根数据线上发送或者接收。 其特点是各数据位同时传送,速度快、效率高,有多少数据位就需要多少根数据线,传送成本高。在集成电路芯片的内部、同一硬件板上各部件之间等的数据传送采用并行的方式,并行通讯传送的距离通常小于 30m。 # 串行通讯 串行通讯指数据的每一位在同一根数据线上按照顺序逐位发生或者接收。 其特点是数据按位顺序进行,最少只需要一根传输线即可完成,成本低,速度慢。计算机与远程终端、远程终端之间数据的传输同常都是串行的。 #...
2.9k 3 分钟

# Keil C51 编译器 1、首先,在 Options ----> Target ----> Memory Model 里可以设置变量分配的空间,如图示: Small:变量默认分配到内部存储空间中,通过普通的 MOV 指令寻址,只用低于 2K 的程序空间。 Compact:变量默认分配到外部页存储空间中,单个函数的代码量不能超过 2K,整个程序可以使用 64K 的程序空间,通过 MOVX, @Ri 之类指令寻址,在不切换页的前提下,最大支持 256 字节外部扩展 RAM。 Large:变量默认分配到外部存储空间中,通过 MOVX, @DPTR...