![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
嵌入式C语言
文章平均质量分 87
GreenDreamer
无畏者,万年900原力的辣鸡
展开
-
我帮厂商找BUG系列之华大(小华)HC32F460——PWM输出占空比错误与解决方案
可能也是官方并没有完全进行测试。否则一个判断语句也就可以了原创 2022-09-11 20:00:00 · 1979 阅读 · 0 评论 -
记:简单GUI结构——最简单架构算法原理建模
0x00 前言本文适用的场景为普通的LCD或者是LED在不显示图像等特别的操作下,节省显存与相关显示的资源,是一种几乎最简单的GUI处理架构。其实严格上讲,不算是算法,只不过算是给下面的工作做一定的前置。阅读本文,您可能需要掌握的知识:技能熟练度GUI了解C语言了解0x10 显示空间首先,一个普通的LCD,在没有内部的专用驱动IC的情况下,都会很浪费空间(主要是内存与当前的)。例如一个完整的12864显示器,需要至少使用8192byte的内存,这对于一般的单片机原创 2022-05-03 16:00:00 · 829 阅读 · 2 评论 -
记:模拟SPI的相关介绍与实际效果
笔者最近完成了一个按照器件化简化的SPI的总线,所以放在MCU上测试一下效果。原创 2021-12-23 21:08:30 · 2218 阅读 · 0 评论 -
记:Riscv-elf的相关编译实现
这里笔者记录了riscv-elf的编译方式,以供OpenHarmony下的某些特殊的芯片编译的编译链的搭建。原创 2021-12-23 20:44:40 · 1406 阅读 · 0 评论 -
记:关于W806的Linux下基本教程(一)——环境建立与第一次烧写
本文主要在Linux下实现了对于联盛德的W806芯片的SDK相关的操作,包括但不限于指定烧写、擦除、编译。原创 2021-12-23 20:31:24 · 1117 阅读 · 0 评论 -
关于HC32F460 IO的最快翻转速度测试
因为笔者的某些使用要求,这里测试完了HC32F460的IO最快的直接反转的速度,因为语言执行与未接外设的情况下,可能反应的只是软件切换的情况下最大的反转速度,并不能代表真实的最快速度。本文还有一个主要原因是为了测试笔者购得的梦源逻辑分析仪的效果。原创 2021-11-24 22:03:11 · 2151 阅读 · 2 评论 -
记:一次FreeRTOS信号量与中断错误的使用导致意外的记录
我当时使用的是FreeRTOS 9,而在设备在某一些时刻会出现异常的通讯问题,且问题呈现概率式的分布,我查看了很长时间才找到问题点。所以在这里作为记录,聊以备忘并且希望可以给一些遇到差不多的问题的同志一些思路原创 2021-08-01 17:02:58 · 1155 阅读 · 0 评论 -
记:关于异常的checkout导致了错误的显示清除
最近有一次在checkout之后,出现一次异常的程序运行,在成功完成编译时出现了异于原本逻辑的动作,因为这种情况可遇不可求,所以现在在这里记录一下,以备日后回溯。原创 2021-07-11 11:43:51 · 457 阅读 · 0 评论 -
记:华大HC32F460系列搭建FreeRTOS记录
0x00前言最近的芯片荒让人十分难受,不少人都开始查看中国国产的芯片,其中MCU比较大的就是华大与兆易、雅特力等厂商,他们各有优劣,因为笔者最近看重了华大的AOS系统,暂时还没有来得及使用,但是还是将最小系统搭建起来了。这里记录一下软件方面的实现。前情提要:本文写下时间线中的各个版本号:ddl:1.3.1FreeRTOS:10.4.3User Manual:1.21技能熟练度数据结构了解0x10 准备工作下列的清单中描述了笔者发现了的需要使用的库原创 2021-05-03 16:02:48 · 5387 阅读 · 8 评论 -
记:COFF文件下的解析说明
0x00 序言本文是因为当前的COFF文件中对于当前的芯片的软件构建,COFF本身是在很久以前的文件了,所以现在在互联网上的资料极少,且当年的COFF文件主要是在替换a.out文件格式,也就是对其的可扩展性增加。而ELF也是对于其的增加,COFF就被夹在了中间,所以这份COFF文档会和我的ELF解析差不多。而因为COFF已经是上个世纪的不需要太对兼容负责的程序格式了,所以自然也就是直接淘汰在现在的执行序列里面了,除了固定的一些应用场景,已经越来越少看到这类文件了。而且现在的解析器也越来越少,所以很多软原创 2021-01-24 15:15:29 · 1353 阅读 · 0 评论 -
记:并线算法的另类魔改版本
0x10 序言这几天项目有一个比较好玩的需求,虽然比较简单,但是还是可以有点说道的,所以笔者写下了这篇文章,寥已记录阅读本文之前,您需要掌握的技能有:技能名称技能熟练度技能教程链接C语言了解暂无数据结构熟悉暂无0x20 由来现有的一个项目中的需求之一。这个是一个很简单的需求,就是又两台设备,需要使用一个控制系统进行工作。因为时原创 2021-01-13 21:55:12 · 147 阅读 · 0 评论 -
记 :C语言中的define的一些巧用
0x10 序言这里记录了一些简单的关于define的语句的使用方法,这里有些是笔者日常使用中用到的,有些是笔者觉得可能以后会用到的。这里需要知道的是,define在编译器中并没有任何作用,仅在开始编译时进行展开。下面的所有操作都是建立在这个场景下。阅读本文之前,您需要掌握的技能有:技能名称技能熟练度技能教程链接C语言了解暂无0x20 软件参数映射如果当前有两个参数需要进行等价调换时,就可以使用define进行人性化的调换。比如把一个map下的各个标志位下的参数无缝原创 2020-12-27 17:12:02 · 414 阅读 · 0 评论 -
记:静态Debug系列(1)--map文件调查
0x10 介绍本文由来于前几天公司的模电小姐姐遇到的某个问题,这个问题在运行调试器的时候也很难找到具体的问题来源。笔者这里使用了另类的方式,通过查看map文档进行查找问题源的方式。这种方式有些巧辟稀径,只能在比较确认错误的前提下的查找。这种问题主要在数组越界、内存溢出等这种错误。这种错误一般在单核下的应用较为简单就可以查到,而一些友好的CPU核心的调试模式下也会比较好的找到,但是在多核心的情况下就会比较难办,而有些对于实时性要求极高的位置,常用的断点可能会对设备和人员造成不可弥补的伤害(炸鸡、爆炸、小型原创 2020-12-19 18:05:12 · 360 阅读 · 2 评论 -
记:ELF输出小程序的编写——初始化定义
0x00 概论最近十一好忙,需要干的事情越来越多……所以原本准备写完的软件编写文章就一拖再拖了。这篇文章只是抛砖引玉,希望大家可以通过我的拙见,实现更好的文章,以及更好的工具。这里的软件还是雏形,依赖的环境十分苛刻,不保证在任何系统上的可靠使用,仅在Windows上使用通用的库函数和API进行编译通过。对代码只有逻辑性的保证。具体的编译问题需要读者自行修复。本文实现了简单的将读取elf文件转换为可以被objcopy处理的bat程序运行的小程序的代码。阅读本文之前,您需要掌握的技能有:技能原创 2020-10-08 21:17:41 · 482 阅读 · 0 评论 -
基本:HEX文件格式定义
HEX文件格式常用于嵌入式软件编程时作为最后的生成代码数据的文件格式之一,其特点是将代码数据与ROM地址组合在一起,方便与上层生成软件进行解耦,也便于烧写器进行烧写。此处简单的对于HEX文件进行一些说明介绍,主要介绍了关于Hex文件基本的架构与数据定义原创 2020-06-27 21:13:02 · 1971 阅读 · 0 评论 -
杂:C语言的一些好玩的操作
0x00 概论在实际使用时,我们经常会用到很多较为麻烦的数据转换,这里就提供了较为简单的数据的处理。阅读本文之前,您需要掌握的技能有:技能名称技能熟练度技能教程链接C语言了解暂无数据类型熟悉暂无0x01 结构转换的简单操作嵌入式软件中,对于数据结构的转换,大家一般都是使用各种奇怪的指针转换,但是C语言的union就可以很简单的实现这个方式,这个方...原创 2020-04-05 16:17:30 · 308 阅读 · 0 评论 -
记:关于一种可变长的存储多位字节溢出的方式(小学数学的胜利)
0x00 概述在实际调试中,某些时刻我们需要处理一些大量可能超过当前CPU数据总线长度的数据,这样可能带来灾难的后果。本文借由简单的数学计算的方式,巧妙的规避了这个问题。阅读本文之前,您需要了解的一些前置技能有:技能名称技能熟练度技能教程链接总线相关(应用)熟悉暂无数据类型熟悉暂无数学基础暂无C语言了解暂无硬件设计基础暂无...原创 2020-03-29 10:00:22 · 583 阅读 · 0 评论 -
位带操作与应用手记
0x00 绪论本片文章主要简述了SRAM方面的位带的使用说明,观看本文您需要有的前置经验有:技能名称技能熟练度技能教程链接单片机熟悉暂无数据类型熟悉暂无数字电路了解暂无C语言熟悉暂无主要从以下方面写:简述了位带的需求来源与详细设置。0x01 位带概述0x11 比特竞争因为现在的芯片速度越来越快,对于数据的操作自然就更加的快,虽...原创 2020-01-19 22:13:38 · 365 阅读 · 0 评论 -
记:关于最近因为溢出踩得坑
0x01 问题出现前几天(其实是近半个月了,但是当时挖坑太早)硬件的同事反应了一个奇怪的问题:在充电过程中,一旦充电突然停止,则在再次开启的时候有一定几率输出电流被拉至最高值,后逐渐被调制为正常。和大佬研讨了一下,发现这种问题其实是因为测试时逻辑的衔接不稳定导致(想想当初真的是To Young To Simple)。后来大佬直接找到我:GD呀,上次你说的那个一场拉高的电流是怎么回事来着?ME...原创 2019-11-27 22:29:51 · 157 阅读 · 0 评论 -
记:一次意外JTAG使用引发对于STM32内核的了解
文章目录0x01 数据异常?0x02 排查过程0x03 究其原因下面有空更新,内部解锁FLASH操作。出差期间发文,很累了,暂时先写到这里更多0x01 数据异常?在一次偶然的情况下,大佬发现他的JTAG出现了莫名其妙的操作——每次烧写之后进行Connect数据就会出现内部FLASH全擦写。而我自己的就不会全擦写。这也是最初的问题源。0x02 排查过程首先,我和大佬对调了JTAG,测试了一...原创 2019-11-27 22:20:49 · 1730 阅读 · 0 评论 -
记:一次单板的意外串口异常解决(上)——下位机端
0x00 前言写下这篇文章的主要目的是总结一下关于最近调试一块单板遇到的,关于串口方面的一些问题。本文将会分为上下两篇,这篇主要讲述的是:串口在发送数据时莫名其妙的出现不可预知的错误阅读本文,您可能需要准备的一些知识有:知识名称熟练度串口协议波形了解数字电路基础C语言基本0x01 问题出现当我使用一块单板进行收发数据时,在发送指定数据0x...原创 2019-11-27 22:11:20 · 667 阅读 · 0 评论 -
记:一种CRC查表生成的算法方式
0x00前言写下这篇文章的主要目的有两点,第一就是之前有一份被吞掉的关于CRC32方面的文章;第二就是最近因为CRC16和CRC8导致了我又费了很多力气在上面,因此需要留以记录。本文分为两部分,前者讲述了相关的CRC常用算法与CRC的计算思想;后者阐述了一种可以计算出相关的CRC计算表的方式以及一种实现的例子。阅读本文,您可能需要掌握的知识:技能熟练度英语熟练知识...原创 2019-11-27 22:07:23 · 1273 阅读 · 0 评论 -
记:关于最近使用STM StdLib发现的PWM Count的BUG记录
0x00 概述前几天使用STM32F2的一款MCU进行硬件PWM输入信号的采集。使用了定时器的计数器模式。效果还可以,在33Hz、占空比为33%的情况下还可以保证1%~2%的精度。但是在使用期间出现了很大的故障,结果发现是因为ST官方给的库的问题。阅读本篇文章,您需要具备的知识:技能名称熟练等级C数据类型熟悉STM芯片了解Stdlib基本0x01...原创 2019-11-26 22:56:09 · 241 阅读 · 0 评论 -
记:一次Magic现象下ST芯片的故障现象。
0x00 前言本文主要记录了再一次使用ST芯片的过程中,因为正常原因,发现在某些情况下引脚之间的互相影响。阅读本文,您可能需要掌握的知识:技能熟练度英语熟练知识检索熟练模电简单C语言了解0x01 现象之前开发的时候,在我初始化某些引脚之前。产品出现了不可控的状态。导致整个产品出现异响(高频电流振荡带来的噪声)0x02 原因出现了故障,...原创 2019-11-27 21:32:27 · 255 阅读 · 0 评论 -
论:嵌入式C语言是否需要数据结构?
0x00:前记前几天看到群组里面几个小伙伴讨论关于嵌入式软件C语言编程是否需要数据结构。有些小伙伴说,嵌入式嘛,代码很轻松,也就不需要数据结构了呀~当时我觉得很奇怪,当然我也不同意他的想法,所以写下了当前的文章用以佐证。文章目录0x00:前记0x01:开头0x02:数据结构?0x03:数据结构应用0x04:举例0x14:智能家居系统0x24:FreeRTOS任务创建0x05 总结0x01:...原创 2019-11-27 21:26:52 · 2648 阅读 · 1 评论 -
记:关于μC-OS II堆栈异常的原因剖析。
0x01 故障出现在使用μC-OS ii进行开发的时候,发现了一个问题,对堆栈使用的时候发现在写入FLASH的时候会出现死机。使用了JTAG进行调试,发现当前的系统进入了硬件错误中断(HardFaultHandle)。0x02 寻找错误根据手册得知,当前硬件错误中断触发主要原因在于指针错误、内存溢出。所以我进行了详细的寻找。因为系统的模块分布过多,因为系统的架构很好,基本上不会出现指针错误...原创 2019-11-27 21:19:11 · 188 阅读 · 0 评论