自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 Uart协议——硬件时序

对于UART来说,如果波特率为115200,也就意味着1秒传输115200个bit的数据,如果设置none校验,1停止位,那么一秒就能传输11520帧数据,也就是11520byte有效数据。由于uart是没有时钟的,因此除了超采样之外,还提供了可选的校验位,他在数据位和停止位之间,所谓偶校验,就是让数据位中的高电平+校验位中高电平的数量保持偶数,奇校验同理。PS:这里再补充一下内存中的大端序,小端序,要记住这个顺序是字节序,也就是一个字节内的数据是始终不变的,大端序小端序决定的是相邻字节的排序。

2025-03-22 12:45:00 783

原创 Rt-thread源码剖析(3)——内存管理

rtt的静态内存分配mempool其实存在优先级翻转问题,详见内存池释放

2025-03-10 23:00:00 1800

原创 Rt-thread源码剖析(2)——时钟与定时器

时钟是所有系统工作的心脏,单片机有自己的主频,每一步逻辑算术运算都发生在时钟信号的翻转时刻;RTOS自然也有自己的时钟系统,本文着眼于RTT的系统时钟以及定时器两个方向对RTT的内核进行阐述。

2025-03-02 11:30:00 662

原创 Rt-thread源码剖析(1)——内核对象

该系列基于rtthread-nano的内核源码,来研究RTOS的底层逻辑,本文介绍RTT的内核对象,对于其他RTOS来说也可供参考,万变不离其宗,大家都是互相借鉴,实现不会差太多。

2025-02-27 21:45:00 862

原创 深入浅出地讲解rvbacktrace原理

RISC-V的trap发生时,会进入trap_handler,然后根据发生trap的原因(中断还是异常),进入不同的处理函数,笔者所使用的RISC-V芯片开启了中断向量,因此中断并不会进入trap_handler,而会直接进入中断处理函数,因此对两种情况分开阐述。

2025-02-17 21:45:00 572

原创 HPMicro Web Tools使用说明

HPMicro Web Tools 是用于 32 位 RISC-V HPMicro 微控制器的图形工具。它允许对 HPMicro 微控制器进行非常简单的配置,主要包括引脚复用,和时钟源选择等功能,最后生成初始化 C 代码。它是 HPMicro生态系统的一部分,且可插件集成在开发环境(Vscode)中。

2024-11-18 14:31:22 787

原创 HPM OTP使用总结

HPMICRO的OTP使用方式一栏

2024-10-25 15:50:02 1226

原创 常见Python 环境管理和发布方式总结

如果你正在开发一个现代 Python 应用程序,并希望同时管理依赖和发布,Poetry是一个不错的选择。它结合了依赖管理和包发布功能,非常适合现代化开发流程。如果你喜欢pip和虚拟环境的组合,并希望简化依赖管理,Pipenv也非常值得推荐。如果你的项目需要处理复杂的跨语言依赖,或者你正在进行科学计算,Conda是一个理想的选择。对于小型项目,使用和venv是一种简单有效的方法。而如果你需要保证环境的完全一致性,尤其是在生产环境中,Docker则是最强大的工具。

2024-10-16 15:15:23 1014 1

原创 RISC-V 向量模式与非向量模式 fence io差异总结

向量模式下,中断函数的跳转是通过jalr直接跳转的,由于 jalr 是一种跳转并链接的指令,结合 RISC-V 的松散内存模型,这种方式可能导致硬件在指令顺序的执行上不够严格,特别是在访问外设的寄存器时,容易出现乱序执行问题。在非向量模式下,通常通过编译器生成的标准函数调用来执行 ISR。这种调用方式受编译器和调用惯例的控制,编译器会在调用前后插入相应的序言和尾声代码,这些代码负责保存和恢复寄存器状态、管理栈帧等。

2024-08-29 21:59:53 1764

原创 从链接的角度理解C语言的static和extern

static和extern是C的关键字之一,最近阅读《C和指针》的时候发现自己先前的理解非常浅薄,因此将书中内容进行梳理和总结,希望更多人能有所收获。

2024-08-16 22:30:28 900

原创 MCU,传感器等嵌入式设备如何自动化测试

本文提供了一种软硬件方案,能够实现上位机PC对于MCU,传感器等设备的自动化测试

2024-08-06 19:08:03 1470

原创 mpu6050快速上手(一):原始数据获取

函数第一部分的宏函数,把driver_mpu6050_interface.h内的接口函数赋给 mpu6050_handle_t;初始化函数的入参就是之前改的那个mpu6050_address_t,如果你直接传入0x68,那也就不用去改之前的头文件了,这里的关键是要给mpu6050_handle_t这个结构体赋予正确的I2C地址。该驱动的功能函数往往都需要入参”mpu6050_handle_t“来对芯片进行控制,结构体的源码如下。随后解除睡眠模式,这步是一定要做的,mpu6050上电默认待机。

2024-07-25 19:08:38 1112 1

原创 threadX 队列 接受消息数>发送消息数debug过程

在threadX的队列测试中,发现了收取数据的线程总共读取数据的次数会大于另一个发送数据的线程发送的次数;直觉上这样的情况肯定是有问题的,因此对该问题进行了详细的研究

2024-03-13 18:48:26 1490 1

原创 Hpm看门狗

今天纪录先辑芯片中功能强大的EWDG外设,作为看门狗的升级版本,他拥有很多值得一讲的功能

2024-01-05 17:05:19 1526 1

原创 MCU原厂是如何对例程进行自动化测试的

而SDK的例程运行在开发板中,因此相较于普通的软件测试,SDK的自动化又离不开硬件的实现SDK例程的手工测试中,我们需要将代码编译后烧录至芯片中,然后通过芯片引脚信号、打印等信息来判断例程的正确性;同一份代码往往支持多种编译方式,同一块MCU也许也支持不同的代码存放路径(flash,sdram),公司也往往是多种型号的MCU支持同一份代码,因此一份sample的代码往往会被测试N次,自动化的性价比也就变得非常高了

2023-11-24 16:33:09 2537 1

原创 定时器2:正交解码器

继续介绍hpm6200evk的定时器,本文介绍拥有解码功能的定时器正交解码器常工作于电机测速中,电机由定子和转子构成,为了控制的精细,转子往往由NS极交替组成,如下图所示因此,放置两个传感器在电机内部,随着转子的运动,就会交替产生固定相位差的方波,而对于每个电机来说,转一圈到底生成多少个方波是确定的,这取决于你电机转子的磁场结构,这就是电机测速的基础关于电机的工作原理,可以参考。

2023-10-13 23:00:00 654

原创 定时器 1:通用定时器

HPM5300通用定时器gptmr的时基单元比较简单,既不能选择时钟源,也没有预分频器,他就是在主频,而类比STM32中拥有死区生成功能的高级定时器,则称为PWM定时器;拥有正交解码的定时器则命名为正交解码器接口QEI,如下图所示​编辑​编辑​编辑本文记录通用定时器TMR的使用:定时、输入捕获,输出比较定时当计数器工作在定时触发中断的情况下,逻辑非常简单,如下图所示。

2023-10-08 22:30:00 744 1

原创 如何利用外部输入同步定时器

定时器支持同步信号,软件同步和通道间的同步较为简单,直接设置对应寄存器即可,硬件同步需要用到TRGM互联管理器进行信号的路由,本文记录了一个简单的例子,演示HPM6200EVK通过外部引脚控制定时器记数

2023-10-08 18:37:44 297 1

原创 工作笔记:GPIO(1)

在HPM的驱动中,并没有提供一个类似STM32的结构体去初始化一个gpio引脚,也不需要开启gpio的工作时钟,如果查看代码,你会发现所有引脚的init都是通过直接配置寄存器来完成了,这极大得增加了初始化的难度,也对那种习惯于通过一个结构体把一切都配置好的编程习惯造成了很大不便。gpio就是一个通用的输入输出口,每一个引脚都是一个gpio,单片机可以获取这个引脚上的电平的高低,也可以控制这个引脚的电平高低,往往一个gpio都会复用别的功能,例如I2C,SPI等用于通信的引脚。gpio的原理图如下所示。

2023-09-15 14:39:31 343

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除