12 半斗米

尚未进行身份认证

我要认证

朝着系统架构师前进的嵌入式系统设计师。

等级
TA的排名 4k+

用函数指针来实现状态机

状态机的基本实现手段是`switch case`语句,不过也可以用函数指针来实现

2020-07-10 21:06:46

使用SPI操作JTAG的两种方案

MCU没有可以直接操作JTAG的外设,一般情况下,可以使用IO模拟来操作JTAG,但是IO模拟速度比较慢。SPI是与JTAG最接近的外设,可以使用SPI来加速JTAG的操作。然而SPI的4根信号(CS、SCK、MISO、MOSI)与JTAG的4根信号(TCK、TMS、TDI、TDO)并不对应,所以不能直接使用,还要一些特殊的处理。

2020-06-20 10:21:33

Rust的枚举还实现了C语言的联合(union)的特性

Rust的枚举特性还实现了C语言的联合的特性,这在一些情况下,可以简化代码。下面这段Rust定义枚举的代码:enum Message { Quit, Move { x: i32, y: i32 }, Write(String), ChangeColor(i32, i32, i32),}参考:Enum Values在C语言中相当于以下代码:typedef enum{ Quit, Move, Write, ChangeColor}MessageType;

2020-06-05 13:35:25

Rust中的常量、变量、mut变量

Rust的常量Rust的常量和C语言中的常量基本一样,常量只能赋值编译时就能计算出来的表达式,不可以是函数返回值、变量的计算值等。Rust的常量必须指定类型。Rust的常量要求使用大写字母,如果使用小写字母,会产生编译警告。C语言中一般会使用大写字母定义宏,Rust的常量和C语言中的常量宏差不多。参考Differences Between Variables and ConstantsRust的变量Rust的变量只能赋值一次,但与常量不同,变量可以赋值运行时才能计算的表达式,可以是函数返回

2020-05-22 11:44:01

Rust的宏与C语言的宏

宏可以说是C语言的双刃剑,C语言中的宏提供诸多便利,但同时也带来了很多陷阱。Rust保留了宏的概念,但是比C语言的宏有了不少改进。宏与函数的区别无论在Rust中,还是C中,宏都可以实现函数的作用。但是在C语言中,函数式的宏和真正的函数是难以区分的,即调用函数式的宏和调用真正的函数的形式是一样的。而在Rust中,调用函数式的宏和调用真正的函数的形式是相区分的,如果将宏作为函数来调用,那么宏名的后面要加感叹号,例如最经常出现的 println!,比C语言多出来的感叹号明确了这是一个宏而不是函数。代码

2020-05-22 11:43:41

外设的驱动模式:中断、轮询

驱动程序的基本形式是中断模式。关闭中断可以形成轮询模式。轮询模式可以是忙等待轮询和择机轮询。忙等待持续轮询状态,直到完成,这期间主循环不能处理其它事务。择机轮询检测到未完成时将退出,转而处理其它事务,当有空闲时再次轮询,需要借助状态机实现保存和恢复上下文。中断配合操作系统形成挂起等待模式。协程是对择机轮询的简化。事件驱动模型是中断模式的泛化。...

2020-05-19 13:10:13

使用国内镜像解决 Rustup 和 Cargo 连接超时问题

sh.rustup.rs 连接超时解决办法wget https://cdn.jsdelivr.net/gh/rust-lang-nursery/rustup.rs/rustup-init.shsh rustup-init.shRustup 连接超时解决办法RUST安装慢怎么办,使用镜像方式安装Rustup 镜像使用帮助Cargo 连接超时解决办法Rust Crates 镜像使用帮助...

2020-05-09 10:29:24

对并发的思考

并发分成伪并发和真并发伪并发系统只有一个处理器,但执行多个任务,在某个瞬间,处理器只能执行一个任务,为了“同时”执行多个任务,将多个任务快速的来回切换,只要速度足够快,就会感觉这几个任务是同时执行的。从宏观上讲,伪并发是并发的,从微观上讲,伪并发是串行的。真并发有多个处理器,在某个瞬间是有多个任务同时在执行的。复杂系统往往是真并发和伪并发共存,系统中包含多个处理器,其中的每个处理器同时又...

2020-03-13 09:42:18

协程的本质

协程是简化状态机设计的一种工具。协程编程表面上看起来与多线程编程很相似。协程与多线程有着本质的区别:协程不会抢占,任务之间是协作式的,多线程的任务之间往往是抢占式的。协程没有上下文切换,协程只有函数的进入和退出,没有多线程的上下文切换。协程没有调度器,任务间的协调完全由应用来决定。协程也是实现多任务的一种形式。...

2020-03-13 09:26:27

SOT-23、SOT-223封装的三极管、MOS管

SOT-23、SOT-223封装的三极管、MOS管SOT-23三极管无论是PNP还是NPN,1脚为基极,2脚为发射极,3脚为集电极。MOS 管无论是P沟道还是N沟道,1脚为栅极,2脚为源极,3脚为漏极。SOT-223三极管无论是PNP还是NPN,1脚为基极,3脚为发射极,2、4脚为集电极。有些封装2脚伸出可焊接,有些封装2脚悬空。MOS 管无论是P沟道还是N沟道,1脚为栅...

2020-01-07 13:29:30

天线的种类

天线的种类弹簧天线棒状天线PCB天线板载天线陶瓷天线玻璃钢天线弹簧天线低成本。直接焊在PCB上。棒状天线比较常见。一般SMA接头。也有引线加IPEX接头。PCB天线一般IPEX接头。板载天线PCB天线的一种,讲天线与电路的其它部分制作在同一块PCB上,蓝牙通常使用这种天线。陶瓷天线贴片安装。陶瓷介电常数较PCB板高,所以使用陶瓷天线能有效缩小天线尺寸;在介电损耗方面,...

2019-12-25 10:14:35

Windows 7 通用 CDC 串口驱动程序

Windows 7 通用 CDC 串口驱动程序Windows 7 自带 CDC 串口类设备的驱动程序文件 usbser.sys,所缺的是驱动配置文件 usbser.inf 文件,将 Windows 10 的 usbser.inf 文件拷贝到 Windows 7,注释掉 SourceDisksNames 和 SourceDisksFiles 部分就可以作为 Windows 7 的 CDC 串口类...

2019-11-02 21:59:37

RV-LINK:NucleiStudio 使用 RV-LINK 调试 RISC-V 程序

NucleiStudio 本质上是 Eclipse,按照 Eclipse 的做法就可以了。

2019-09-28 08:36:54

RV-LINK:Eclipse 使用 RV-LINK 调试 RISC-V 程序

Eclipse 使用 GDB Hardware Debugging 类调试配置使用 RV-LINK,JTAG Device 选择 Generic Serial,GDB Connection String 填入 RV-LINK 串口号。

2019-09-27 22:18:53

RV-LINK:GDB 使用 RV-LINK 仿真器调试 RISC-V 程序

准备作为仿真器的开发板,下载 GDB,安装 USB 串口驱动,将 RV-LINK 烧入开发板,于是开发板变身 RISC-V 仿真器!

2019-09-26 17:26:55

RV-LINK:将 Longan Nano 开发板变成 RISC-V 仿真器

Longan Nano 烧入 RV-LINK 固件,将 Longan Nano 开发板变成 RISC-V 仿真器。

2019-09-27 16:27:28

RV-LINK:将 GD32VF103C-START 开发板变成 RISCV-V 仿真器

将 RV-LINK 固件烧入 GD32VF103C-START,将 GD32VF103C-START 变成 RISC-V 仿真器。

2019-09-27 16:39:34

RV-LINK:用RISC-V开发板做RISC-V仿真器

用基于RISC-V的MCU开发板来实现RISC-V的仿真器,取名RV-LINK。用 GD32VF103C-START 和 Longan Nano 实现了调试功能,可以调试 GD32VF103。

2019-08-24 22:23:15

RV-LINK:GD32VF103 问题:JTAG 引脚重映射、TAP 链定义等

在开发 RV-LINK 过程中发现的 GD32VF103 存在的问题。

2019-09-25 21:12:37

RV-LINK:输出非预期响应向 GDB 报告错误

通过返回非预期的响应,GDB 将会检测到非预期响应,并报告响应的内容,可以利用这个特性,向 GDB 报告错误。

2019-09-12 14:28:05

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。