- 博客(92)
- 资源 (29)
- 问答 (1)
- 收藏
- 关注
原创 嵌入式驱动入门之LCD-1.基础原理(颜色格式、FB、8080/RGB接口)
主要介绍LCD显示的基本原理,涉及像素、分辨率、颜色模型、RGB888等格式、Framebuffer、8080接口、RGB接口。
2023-05-31 23:50:08
2080
原创 一文彻底分清ARM架构、内核、指令集等相关概念
任何学习嵌入式/单片机的朋友都绕不开ARM,但初学者总是对ARM架构、内核、指令集等相关概念不够清晰或者混淆,本文帮助入门的朋友彻底弄清楚。
2023-04-28 19:59:11
2769
2
原创 彻底掌握FreeRTOS中的务通知(Task Notifications)
ADC_low_level_read是读取ADC值函数,读取后调用xTaskNotifyFromISR函数发送任务通知,ulValue参数为ulConversionResult,即ADC转换的结果,eAction参数为eSetValueWithoutOverwrite,如果在调用xTaskNotify()之前接收任务有一个挂起的通知,则不采取任何操作,xTaskNotify()将返回pdFAIL。如果任务试图将任务通知发送给已经有通知挂起的任务,则发送任务不能在阻塞态下等待接收任务重置其通知状态。
2023-04-23 21:10:10
4080
1
原创 彻底弄清FreeRTOS中的事件组(Event Groups)
任务A只有在所有四个任务都达到同步点后才能接收另一个事件。一个任务等待多个事件很简单,比如A任务的操作需要B、C、D任务中的某个操作,那A任务调用xEventGroupWaitBits()去等待,当B、C、D中操作完成了,B、C、D分别调用一下xEventGroupSetBits(),都调用后A任务就会继续运行。3.然后任务C调用xEventGroupWaitBits()来等待所有三个事件位都设置好,但是到那时,所有三个事件位都已经被清除,任务A和任务B已经离开了各自的同步点,因此同步失败。
2023-04-18 18:08:34
2419
原创 FreeRTOS如何解决访问冲突/线程不安全(临界段、互斥锁、挂起调度、看门人任务)
互斥锁(或者叫互斥量,我用Linux比较多,习惯叫锁,FreeRTOS中叫量比较合适)是一种特殊类型的二进制信号量,用于控制对两个或多个任务之间共享的资源的访问。LP运行,获得互斥锁,HP尝试运行,但是因为没有互斥锁,进入阻塞态,同时因为HP优先级高,LP继承了HP的优先级,不再会被MP抢占。HP就可以在LP释放互斥锁的时候运行了。FreeRTOS提供了几个可用于实现互斥的特性,但是最好的互斥方法是(在可能的情况下,因为通常不实用)将应用程序设计成不共享资源的方式,并且每个资源只能从单个任务访问。
2023-04-18 00:05:00
5324
原创 STM32F4+FreeRTOS+LVGL实现嵌入式快速开发(缝合怪)
我的触摸屏是电阻屏,驱动从正点原子的触摸屏实验例程中来,该驱动中用到了SysTick定时器来延时微秒,我们的工程是含有FreeRTOS的,会造成冲突,我也懒得优化细改了,用了个比较粗糙简单的方法,直接在延时前把几个寄存器保存一下,延时后再恢复。在家中找到一个早之前的开发板,个人还挺喜欢的,只有最小系统,把pin引出来了,没有乱七八糟的外设,还找到一个240*320的LCD屏幕,ILI9341驱动。都有显示屏了,当然得显示一下,增加一下逼格,但是自己画肯定不好看,也也没有那个必要,这就需要借助开源图形库了。
2023-04-15 21:42:02
12170
9
原创 详解FreeRTOS中的信号量(semaphore)
在这种情况下,事件处理程序将在每次事件发生时“give”一个信号量——导致信号量的计数值在每次“give”时增加。可以将延迟处理任务的优先级设置最高,然后,在ISR中调用portYIELD_FROM_ISR(),ISR结束后会运行延迟处理的任务(因为它优先级最高)。当一个任务完成对资源的处理后,它将信号量的计数值向后递增“give”信号量。t1时Task1运行,Task2阻塞等待信号量,t2时发生中断,ISR执行,give一个信号量解除Task2的阻塞态,t3时Task2运行,结束后继续等待下一个信号量。
2023-04-11 20:21:56
3979
原创 彻底理解FreeRTOS中的队列(Queue)
“队列”(Queue)提供了任务与任务之间通信的机制。在这样的场景:一个或多个其他的任务产生数据,主任务要依次处理数据,队列就显得非常有用了。
2023-04-04 23:55:24
6563
1
原创 FreeRTOS任务之调度器中的三种调度算法
本文主要讲解FreeRTOS调度器中的三种调度算法:基于时间片的抢占式调度、不带时间片的抢占式调度和协同调度。
2023-04-02 21:36:47
2828
1
原创 彻底掌握FreeRTOS中的任务
FreeRTOS是个操作系统,FreeRTOS的任务(task)其实就是像我们电脑中的一个独立程序,表现在源码中,其实就是一个函数。本文从学会使用任务(task)到理解逐步深入。
2023-04-01 00:18:41
2172
1
原创 从Linux内核中学习高级C语言宏技巧
Linux内核可谓是集C语言大成者,从中我们可以学到非常多的技巧,本文来学习一下宏技巧,文章有点长,但耐心看完后C语言level直接飙升。
2023-03-10 12:49:09
2093
4
原创 嵌入式linux驱动学习-用cdev代替register_chrdev()
上回说到字符设备驱动程序的注册与销毁register_chrdev()和unregister_chrdev()这是有缺陷的。现在用另外一个更好的方法代替
2023-02-21 20:35:18
1007
1
原创 嵌入式Linux学习经典书籍-学完你就是高手
很多刚入门的朋友一直都有人问我要学习资料,嵌入式实在太杂,网上很多人写的太不负责了,本书单综合了本人以及一些朋友多年的经验整理而成。
2023-02-14 16:04:35
3494
5
原创 C语言技巧:有if时使用likely和unlikely让代码运行更快
在单片机/嵌入式编程中,对速度要求比较高,likely和unlikely就是一个比较好的技巧,适用于有if-else分支,且知道哪个发生概率大的情况。
2023-01-27 16:42:30
4412
2
原创 冯·诺依曼、哈佛、改进型哈佛体系结构解析
在如今的CPU中,由于Catch的存在,这些概念已经被模糊了。个人认为去区分他们并没有什么意义,仅作为知识点。
2023-01-24 01:16:45
3362
2
原创 IIC(I2C)协议详解
IIC,即I²C,全称 Inter-Integrated Circuit,字面上的意思是集成电路之间,它其实是I²C Bus简称,所以中文应该叫 集成电路总线 ,它是一种串行通信总线,使用多主从架构,由飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边设备而发展。
2023-01-05 12:18:37
10258
原创 SPI协议讲解与总结
SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。它们分别是MISO(主设备数据输入)、MOSI(主设备数据输出)、SCLK(时钟)、CS(片选)。
2022-12-02 22:44:21
7056
2
原创 写个俄罗斯方块,感受嵌入式linux应用开发
俄罗斯方块是一个简单的小游戏,完全可以采用单片机,裸机完成。但在嵌入式linux环境下实现,可以充分感受linux应用开发,同样是写一个程序,但功力可能大不相同。由单片机转嵌入式linux应用,框架感很重要,好的框架方便扩展,修改,可移植性强。
2022-11-14 21:31:37
2172
7
原创 嵌入式应用-详解移植并使用freetype显示文字
学过单片机的朋友都会用点阵来显示一个字符,无非就是把点阵里的值取出来一个个在屏幕上显示,修改字符大小需重新定义点阵,或者经过运算,freetype是一个矢量字体引擎,可以显示ttf字体文件中的字符。点阵和矢量字体并无优劣,点阵在资源少,显示字符少的情况下更加适合,矢量字体在资源多,显示字符多,显示要求变化大的情况下更加好。
2022-10-29 11:50:06
6065
5
原创 如何在Linux上优雅地写代码-Linux生存指南
初入Linux,发现老是要面对一个命令行,大黑框,看不懂各种手册,写代码也是用vi/vim,难受的捉急。其实Linux下的各种工具,强大得超出你的想象,如果你初入Linux,那么你急需阅读这篇文章,让你更加优雅,更加高效。
2022-10-22 22:15:41
3542
34
原创 浅谈面向对象设计思想,以及在Linux内核中的体现
c语言是一项典型的面向过程的语言,一切都是流程。简单的单片机程序可能只有几行,多的也不过几百行。这时一个人的能力是完全可以走通整个代码,但引入操作系统后,事情就变得复杂了。
2022-10-17 13:33:23
1708
原创 浅谈Linux tty体系,理清tty驱动层次与各种概念
虽然Linux内核是由C语言写的,但处处体现面向对象的设计思想,这对很多只会C语言的朋友来说,理解比较困难,尤其是tty体系,涉及很多混乱的概念。
2022-10-16 10:36:41
4530
2
原创 Linux下C语言编程风格和规范
Linux有独特的编程风格,在内核源代码目录Documentation/CodingStyle,详细描述代码风格。建议大家可以去看一下,老外写技术文档还是很有意思的,上来就狂喷,“你不这样写就会完蛋,异教徒才不这样写……”,没有国内那么刻板,多阅读英语文档对技术增长很有帮助。
2022-10-03 20:51:24
2994
1
原创 三种Linux字符设备驱动写法-2:总线设备驱动框架
这篇文章中介绍Linux总线设备驱动框架,重点是体会整个框架,特别是感受一下分层的思想和抽象的方法,很多结构体中的成员不必深究到底如何实现或者有何作用,我将在今后的文章中深入探讨。
2022-10-02 18:39:38
1725
原创 三种Linux字符设备驱动写法-1:最简单的基本框架
学习目的:对Linux驱动整体思路有所了解,掌握最简单的Linux字符设备驱动程序写法,本文以led为例。
2022-10-01 16:07:59
2542
1
原创 嵌入式开发需要掌握的u-boot命令
如果不是在芯片级公司工作,而是在产品级公司工作,当我们拿到一款芯片,厂家都会提供可以使用的bootloader,我们对u-boot基本掌握就行,只需要掌握如下命令。
2022-09-16 17:38:22
978
5
原创 嵌入式入门-交叉编译、bootloader、kernel、根文件系统关系
在实际工作中,当你拿到一块芯片,交叉编译环境、bootload这两样东西一般芯片厂家会给你提供,而kernel和根文件系统需要根据你的需求进行调整,最后就是编写应用了。
2022-09-14 22:04:19
2323
2
原创 嵌入式Linux入门—Linux多线程编程、互斥量、信号量、条件变量
线程,是操作系统所能调度的最小单位。普通的进程,只有一个线程在执行对应的逻辑。我们可以通过多线程编程,使一个进程可以去执行多个不同的任务。
2022-09-13 08:47:25
1863
原创 嵌入式Linux入门-输入系统应用编程(鼠标、键盘、触摸屏)
在Linux系统下,我们如何编写程序获得鼠标的位置?键盘的哪一个按键被按下了?触摸屏的哪个位置被触摸了?学过单片机的都知道,这些本质上都是一些信号,由驱动程序解析,但我们讲的是应用编程,也就是说从驱动程序中直接获取我们需要的。那么必然就需要一套规范的接口,不然每个人写的都不一样,做个应用,还得阅读驱动源码,就离谱了。
2022-09-11 21:39:14
3080
3
原创 如何用SourceInsight阅读大型源码-以Linux内核为例
1.解决解压Linux内核文件重名问题2.用SourceInsight建立内核源码工程3.SourceInsight常用快捷键
2022-09-11 11:48:04
2472
原创 Linux安装zlib、libpng、freetype给交叉编译工具链使用
zlib、libpng、freetype这三个是不同的库,所谓安装也就是用相应的工具链编译,并把编译好的头文件和库文件放到正确的位置。
2022-09-10 13:29:13
3390
原创 嵌入式Linux入门-Framebuffer应用编程在Linux系统下画个点
本文主要介绍Frmebuffer应用编程,注意讲的是应用,而不是驱动。所以你需要你一个开发板,并且已经可以运行Linux系统。
2022-09-09 19:56:42
1965
单片机智能温度报警系统设计(硬件原理图、程序、资料、文章)
2022-05-18
全国大学生电子设计竞赛常用电路模块制作教程(共376页).pdf
2022-04-21
C常见的问题集合(非常精彩)特别适用于想深入学习C语言或者做单片机、做嵌入式的同学
2022-04-21
单片机教程大全(c语言、电路、传感器、经验).rar
2022-04-21
74系列芯片资料大全.rar
2022-04-21
单片机常用电子元器件芯片资料大全
2022-04-21
基于51单片机的智能台灯设计(课题设计、毕业论文)
2022-04-07
完整的数电课件、数字电路单片机必学
2022-04-07
基于51单片机的多功能电机控制器设计(完整的毕业设计,包含硬件原理图、程序、资料)
2022-04-07
基于52单片机的电子密码锁,包含论文、硬件原理图、程序、资料
2022-04-07
基于52单片机的数字示波器,包含论文、硬件原理图、程序、资料
2022-04-07
BMP、GIF、JPEG图片编解码资料合集
2022-04-07
RawOS操作系统教程及资料.rar
2022-04-07
WAV文件格式资料合集
2022-04-07
PID算法的原理与单片机上的实现(最易理解)
2022-04-07
Linux socket listen失败
2022-03-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人