- 博客(28)
- 收藏
- 关注
原创 (WS2812)RGB的通信及驱动总结(SPI + DMA思路)
D1(第一颗LED)收到3组数据(大蛋糕,3×24bit),自己截取一组数据(吃一口,24bit),剩下两组数据(2×24bit),交给D2。如上图,如果说通过发送三个字节(24bit)来控制这个灯,是不行的。D3也一定要截取,然后就没有数据能交给D4了(假设如图那样,只发了3组数据)(“代表逻辑的 0/1”和“SPI发送的数据位”容易混在一起。可以简单理解成一个大蛋糕,一个由所有RGB灯的数据所组成的大蛋糕。正确的信号需要高低电平的组合。就像按开关,灯就会亮一样,是物理连接决定的,不需要“理解”
2026-02-27 15:50:03
788
原创 【HDMI音视频传输协议】总结
电视(发送方)的逻辑地址通常由设备类型固定(如固定为0),而其他设备(接收方)的逻辑地址需要通过自身发送轮询消息进行探测主动申请。IEC958在传输数据时使用双相符号(Biphase Mark Code)编码,简称BMC,属于一种相位调制(phase modulation)的编码方法,是将时钟信号和数据信号混合在一起传输的编码方法。针对飞利浦电视HDMI无声问题,本质上是音箱端的I2C驱动存在缺陷,偏移量没有做好同步,导致电视内部指针指向错误的位置,下发错误的EDID报文,导致出现兼容性问题。
2026-02-26 16:00:08
1408
原创 【ESP32-S3】【1.2】第一个程序的编写并完成烧录
未出现版本就点击New project如果没有步骤3那就选hello_world,自己调即可。
2026-02-26 10:22:04
53
原创 链表BM1:反转链表
给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。数据范围:0≤n≤1000要求:空间复杂度 O(1) ,时间复杂O(n)。思路:确保上一个和下一个结点的位置,防止改变指向后找不回下一个结点位置。经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。如当输入链表{1,2,3}时,
2026-02-25 14:03:10
39
原创 基于STM32F103的 I2C(IIC) 的原理及应用(实现0.96寸OLED屏幕字体显示)
可以看到,外围器件的时钟线和数据线都是挂载在IIC总线(由主控芯片提供),并且在空闲状态下所有器件的时钟线(SCL)和数据线(SDA)都被总线的上拉电阻拉高,这样就可以把SDA引脚和SCL引脚设置为开漏模式即可,原因是因为从器件内部结构中SDA和SCL都是开漏结构。(SCL Serial Clock),所有通过IIC接口通信的外围器件都挂载在IIC总线上,通过这种机制就可以实现多机通信。如果要用到的I2C的外设较多,I2C不够用时,就可以选用两个IO口通过对电平的拉高拉低来模拟I2C。
2025-12-29 20:32:29
792
原创 基于STM32F103的通用定时器和 PWM 的原理及应用(实现SG90舵机的转动)
GPIO口和定时器通道是合作关系,需要通过GPIO口才能输入/输出脉冲信号(所以后面可以直接用IO口加延时来模拟脉冲信号)
2025-01-05 20:07:49
596
原创 基于STM32F1的基本定时器的原理
1,进入数据手册,了解基本定时器的主要特征2,看懂理解基本定时器框图3,查阅2.3章中的存储器映像以及时钟树就可以知道定时器是挂载在哪个总线下,从而知道对应是时钟频率4,由上图查阅可知,APB1的分频系数是 2, APB2 的分频系数是 1,所以APB1总线下的基本定时器6和7的时钟频率是 36 * 2 = 72MHz5,搞定了时钟频率是多少后,剩下就是配置好预分频值、自动重载寄存器的值、清空当前计数器的值即可,接下来就了解这三个寄存器1,包含对应的外设源文件2,外设源文件中貌似找不到对应的步骤注释,可以参
2025-01-03 12:04:05
543
原创 基于STM32F103的语音控制模块的应用(实现语音控制小灯开关)
我这边直接用了1.0版本的了,后面的陀机和风扇后面硬件接上就好了,现在主要看控小灯。
2024-12-31 18:07:09
579
原创 基于STM32F103的USART的原理及应用(一)(实现手机BLE和MCU进行通信)
【代码】基于STM32F103的USART的原理及应用(实现手机和BLE进行通信)
2024-12-31 11:00:13
887
原创 (总结)通用定时器和 PWM 的原理及应用(舵机、呼吸灯的实现)
可以把定时器的某个通道连接到GPIO引脚上,然后从外部输入脉冲信号,经过 通道的滤波以及边沿检测之后,可以记录某个电平信号的脉冲宽度以及周期。
2024-12-18 15:59:45
1202
原创 (总结)STM32中基本定时器外设的原理及应用
定时器的作用一般是为了使用定时功能和中断功能(洗衣机、微波炉、电风扇、智能空调......),当然在STM32中也可以利用定时器产生周期性的脉冲信号来控制不同的外设(电机的转速、舵机的角度、灯光的亮度........),所以掌握STM32中的定时器对于项目开发是很有必要的。对于STM32F407微处理器而言,内部一共集成了14个定时器,其中有2个基本定时器(TIM6和TIM7)、10个通用定时器(TIM2~TIM5、TIM9~TIM14)、2个高级定时器(TIM1和TIM8)。编写定时器中断服务函数。
2024-12-17 17:13:43
574
原创 (总结)STM32中系统嘀嗒定时器(Systick)的原理和应用
通过阅读ST公司提供的函数库的帮助手册,可以知道ST公司默认使用的高速外部时钟的频率是25MHZ,并且PLL_M = 25,PLL_N = 336,PLL_P = 2, 芯片主频 = HSE / M * N / P = 168M。如果使用Systick定时器进行定时,则需要弄清楚Systick定时器的时钟频率,而定时器是挂载在总线下的,不同的总线的频率是不同的,而总线的频率又是由时钟来提供的,而时钟的提供者又各不相同,所以必须要了解各时钟源的区别。巧记:M(8) N(336) P(2)
2024-12-17 10:37:55
2137
原创 (总结)STM32中的中断原理及应用(NVIC、EXTI、SYSCFG,实现按键中断)
NVIC 主要属于内核中的外设(使用时无需打开时钟,因为一旦通电内核就会启动),作用是管理所有的中断,例如中断的使能和失能、中断的优先级NVIC通过4个bit位来设置中断优先级,其范围是0 ~ 15NVIC(STMF407中)负责管理92个中断(10 个不可屏蔽中断 + 82个可屏蔽中断),而Cortex-M4内核有256个中断不管是Cortex A系列还是Cortex M系列的内核内部均有NVIC,通过NVIC来管理内核异常和外部异常。EXTI有23个独立的用于产生事件/中断请求的边沿检测器。
2024-12-15 15:55:38
1303
原创 (总结)RS232 和 RS485 协议原理及应用
RS485要更长(1500m),抗干扰能力更强,并且232是点对点通信,而485是能连接多个收发器,能够形成一个网络,485和TTL是兼容的(不过还是需要MAX485进行电平转换),而232则需要一个MAX232芯片进行电平转换才行。I2C的主从设备间通信是已经规定好的了,但是 RS485 是没有明确规定主从设备间的通信规则。
2024-12-08 21:08:21
814
原创 (总结)mplayer的常用控制命令
在[value]的值对应ID_SUBTITLE_ID值'-identify',。如果[value]的值-1,将关闭字幕显示。可用的字幕周期,如果[value]省略或低于-1。这主要是循环所有字幕命令,如果要设置一个特定的字幕,使用sub_file,sub_vob,或sub_demux。关闭字幕显示,如果关闭[value]的值为-1或比更高可用的字幕指数更大。如果[value]参数是当前和非负,并取消了字幕文件的[value]索引。循环可用标题,如果[value]的值省略或负数。在[value]的值。
2024-11-28 20:01:38
1335
原创 STM32F407ZET6芯片参数总结
STM32F407ZET6 是一款高性能的 32 位微控制器(MCU),由 STMicroelectronics 公司生产。:包含多达 17 个定时器、3 个 12 位 ADC、2 个 DAC、以太网 MAC、USB OTG、高速 SPI、I2C、CAN 等多种外设接口。:适用于工业自动化设备、医疗电子设备、智能家居产品、通信设备、机器人控制系统、数据采集系统等多种场景。:采用 LQFP144 封装,共有 144 个引脚。:支持多种低功耗模式,适用于低功耗应用场景。的 SRAM(静态随机存取存储器)。
2024-11-18 20:38:46
2103
原创 makefile的基本用法总结记录
这里的 myproject: main.o function.o showText.o bmp.o 指的是要生成 myproject 编译文件需要下面这几个.o的对象文件,而这几个对象文件就需要链接到指定对应的的.cpp文件中,,故分别编写 main.o: ./main/main.cpp function.o: ./src/function.cpp showText.o: ./src/showText.cpp bmp.o:./src/bmp.cpp 这几行。
2024-11-12 11:01:43
374
原创 Cortex-A53高端智能影音融合播放系统
在创建主界面时,我通过创建两个图片按钮,添加点击事件,即当点击按钮时,触发点击事件,能够运行对应的功能函数在创建播放器界面时,首先通过popen打开mplayer进程,并用一个线程不断获取当前音乐播放进度,实时更新时间标签和歌词显示。音乐播放器基本控件界面与主界面设计大致相同。实现控件的触发事件,主要是向mplay进程发送一系列的命令,例如当想mplayer暂停,就发送“Killall -Stop mplayer”,希望继续播放就发送“Killall -CONT mplayer”.等等。
2024-10-25 16:35:34
1280
原创 智慧医疗——Cortex-A53旗舰级科室呼叫管理系统
内存映射是一个重大难点,要通过open函数打开LCD设备,调用mmap函数映射LCD设备,再通过强制类型转换把映射地址强制转换为 int (*)[800]图像处理也是一大重大难点,本次项目我主要处理的是bmp图像,并且bmp图片 = 文件头(14)个字节 + 位图信息头(40)个字节 + 像素数据,不过在网上或者GPT都可以获得图像处理的接口,最后把图像显示在LCD屏就大功告成了。
2024-10-23 21:37:03
1466
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅