- 博客(33)
- 资源 (4)
- 收藏
- 关注
原创 C语言 -- 发布订阅机制
消息的发布订阅也是一种软件的架构方式,主要是用于解耦和消息的传递。在这个消息的发布订阅机制主要有两个主要的,即:消息的发布者和订阅者。而这两者是通过一个媒介来进行消息的传递。发布订阅机制在生活当中非常容易见到这个机制。例如:微信的公众号,公众号的作者就是发布者,我们作为用户就是一个订阅者。当公众号有信息发布的时候,用户(订阅者)通过公众号这个媒介进行获取到作者(发布者)更新的内容信息。
2024-10-04 20:21:51
1120
1
原创 LVGL移植——stm32f4
移植LVGL版本:8.3.6主控:STM32F407ZGT6github链接:https://github.com/lvgl/lvgl.git。
2023-05-04 20:02:42
3285
原创 uart——串口数据帧处理
在串口上,我们经常要对传过来的数据进行处理与解析。最经典的就是处理数据帧,数据帧是什么呢?数据帧在我看来就是一连串的数据单元。数据帧定义了一些基本的协议。例如,数据帧一般会定义出帧头、帧尾、校验位、数据位、数据长度、命令字节(CMD)命令。串口是进行处理串口数据帧的方式:一般我们通过对数据帧的处理判断接受到的数据是否符合协议上的要求,解析到数据帧的格式符合要求则执行我们要执行的操作,否则丢弃这一帧的数据包,等待下一次的数据传输过来。
2023-04-09 15:38:36
3615
3
原创 Linux基础——Framebuffer(应用层驱动lcd)
Framebuffer是用一个视频输出设备从包含完整的帧数据的一个内存缓冲区中来驱动一个视频显示设备。在内存缓冲区中标准上包含了屏幕上每个像素的色彩值组成。色彩值通常存储成1-bit(黑白色彩),4-bit调色版,8-bit调色板,16-bit高色彩,24-bit真色彩格式。一个额外的alpha通道有时用来保存像素透明度信息。帧缓冲设备提供了显卡的抽象描述。他同时代表了显卡上的显存,应用程序通过定义好的接口可以访问显卡,而不需要知道底层的任何操作。该设备使用特殊的设备节点,通常位于/dev/fbx目录。
2022-07-23 18:52:15
1792
原创 Linux基础——Makefile
Linux环境下的程序员如果不会使用GNUmake来构建和管理自己的工程,应该不能算是一个合格的专业程序员,至少不能称得上是Unix程序员。在Linux环境下使用GNU的make工具能够比较容易的构建一个属于你自己的工程,整个工程的编译只需要一个命令就可以完成编译、连接以至于最后的执行。不过这需要我们投入一些时间去完成一个或者多个称之为Makefile文件的编写。所要完成的Makefile文件描述了整个工程的编译、连接等。...
2022-07-18 20:35:42
849
原创 Linux基础——GCC编译器
GCC编译器是Linux系统下常用的一个编译器,它是一个编译器集合,它可以编译多种语言,即c、c++、,java、php等多种语言。一般学习过c语言或是其他语言我们都知道要将一个c文件变成一个可执行文件,我们要经过,预处理、编译、汇编、链接等步骤才能得到一个可执行文件。而我们的GCC编译器可以通过其不同的选项来对这些步骤进行控制。......
2022-07-18 15:47:56
811
原创 Linux常用入门指令
学习Linux就一定要学习Linux的指令。无论你是软件还是硬件方面的。要学习Linux就绕不开Linux指令。一般来说Linux指令的组成一般是:我们对于入门掌握这些大致就足够用了。
2022-07-10 20:49:12
459
原创 单片机编程语言——C语言(2)
C语言关系运算符逻辑运算符if、else if语句关系运算符关系运算符主要就是进行逻辑判断,主要就是运用在if、if....else if、while语句中。注意:>=, <=, ==, !=这种符号之间不能存在空格。逻辑运算符逻辑运算符也是和关系运算符一样的进行逻辑判断。一般也是运用在if、if....else if、while语句中。if、else if语句这个语法主要是进行逻辑判断用的。if语句if(表达式){ ......}其含义主要是:当里面的表达式为
2022-04-05 00:37:37
2540
原创 单片机编程语言——C语言(1)
C语言结构注释变量定义与赋值数据类型强制转换前言:我们都知道单片机要对其写指令、编程等就需要一种编程语言。在众多的编程语言中不可否认的是c语言是最适合成为单片机的编程语言的。我们在这里分享一下c语言的知识点。结构一般来说c语言的结构,一般都是包括若干个头文件(以#include" xxx ")和函数组合而成的。例:#include "stdio.h"int main(void){ printf("hello wold"); return 0;}在这里我们看到有两部分#include
2022-03-29 18:37:03
2546
原创 蓝桥杯嵌入式定时器
在蓝桥杯中定时器的使用是很频繁的,并且定时器的使用也可以让我们的功能实现的更加的完美。我们这里就主要介绍定时器中断。我们再来看看硬件上,在stm32f1上主要是用通用定时器来进行中断的。例如:我们用定时器4进行定时器中断,并且每隔100ms串口打印数据。tim.h#include "stm32f10x.h"void tim4_init(u16 arr,u16 psc);tim.c#include "tim.h"void tim4_Init(u16 arr,u16 psc){ TI
2022-03-28 20:55:33
432
原创 蓝桥杯嵌入式第六届省题
电压测量监控设备题目分析RTC时钟ADC测量功能串行功能LCD显示按键功能代码main这一届的省题用到的外设比较多一点,有用到i2c、key、led、usart、rtc、adc。并且考点相对比较全一点,但我们只要会了上述的外设配置,总体的main函数的逻辑代码编写,难度不大。题目分析我们接下来看看任务要求:我们再来看看主要的考点并且分析:RTC时钟1、rtc时钟,并且要设置三个时分秒的变量,与RTC时钟去对比,当RTC时钟与设置的阈值相等的时候上报信息。即:unsigned char shi
2022-03-25 13:59:53
5764
原创 蓝桥杯嵌入式RTC配置
在蓝桥杯中,RTC也是有时会常考的一个考察点,这个RTC也不难。主要也就是时钟的配置。时钟的话,也有很多方法去配置。但是考虑到有时会要求一定要用RTC去配置,这个RTC的配置也还是要会配置的。这个配置,官方给的固件库中代码还是给出来的。只要把关键部分CTRL+C、CTRL+V就可以了的。例如:配置一个初始时间为23:59:30.h文件#include "stm32f10x.h"#define SS 23#define FF 59#define MM 30void rtc_init(voi
2022-03-22 00:08:25
650
原创 STM32——stm32 I2C通信代码配置(2)(学习笔记)
STM32——I2C通信配置I2C的系统框架1、通讯引脚2、时钟控制逻辑3、数据控制逻辑4、整体控制逻辑I2C代码配置既上一篇文章对I2C的理论分析、讲解。基本原理已经大致了解了。本文就以I2C在stm32上的系统框架图的分析、讲解和对I2C的代码配置。基于平台:STM32F407ZG参考资料:STM32f4参考手册、STM32f4数据手册I2C的系统框架本文对I2C系统框架图分解成四部分:●通讯引脚●时钟控制逻辑●数据控制逻辑●整体控制逻辑1、通讯引脚在框架图中我们看到主要有三个
2022-03-21 16:23:36
17306
原创 STM32——I2C通信理论基础(1)(学习笔记)
STM32——I2C通信理论硬件层协议层前言:我们在学习stm32的时候,要想学得更好。i2c协议的学习是必不可少的。现在很多的硬件、传感器等都是用到i2c协议与MCU(stm32)进行通信的。因此i2c还是必不可少的一个重要知识点。i2c简介:I2C 通讯协议 (Inter - Integrated Circuit) 是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路 (IC) 间的通讯。为了
2022-03-19 10:59:09
5386
原创 蓝桥杯嵌入式PWM
PWM固定频率,占空比可调。频率、占空比可调。在蓝桥杯嵌入式的比赛中PWM也是很经常考到的一个高频考点。因此掌握PWM的配置也是很重要的。在本文就重点掌握两种PWM配置方式即:●固定频率,占空比可调。●频率、占空比可调。在开始之前我们要懂得占空比和频率的计算公式是怎样的?即:频率=(预装载值+1)*(分频系数+1)/72MHZ占空比= TIMx->CCR1/(预装载值为+1)这个分析完了,我们再把视线拉倒主板上看看其硬件连接pwm是搭载在哪一个GPIO上。在省赛中大多的pwm的配置都是
2022-03-15 08:04:48
2926
1
原创 STM32——DMA、代码配置部分(2)(学习笔记)
STM32--DMASTM32的DMA配置结构体成员分析DMA完整的配置STM32的DMA配置结构体成员分析首先我们看一下DMA_Init();初始化里面的结构体成员:DMA_Channel:这个是DMA的通道选择,可选通道 0 至通道 7,每一个外设对应固定的通道。这个直接控制寄存器的DMA_SxCR寄存器的 CHSEL[2:0] 位的值。即:DMA_PeripheralBaseAddr:外设地址。这里直接控制的是寄存DMA_SxPAR 寄存器的值;一般设置为外设的数据寄存器地址。DMA
2022-03-14 01:58:45
4867
原创 STM32——DMA、基础理论部分(1)(学习笔记)
STM32--DMA一、DMA简介二、DMA功能框图工作模式三、 STM32的DMA配置基于平台:stm32f407ZGT6开发板STM32–DMA一、DMA简介DMA是什么DMA,全称为:Direct Memory Access,即直接存储器访问。其主要功能作用是用于数据传输并且不占用CPU,即:#mermaid-svg-674cmfRP75EKmIKs {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;
2022-03-13 00:16:21
2055
1
原创 蓝桥杯嵌入式ADC配置
在蓝桥杯嵌入式中ADC是比较重要的一个模块,ADC多次会考到,因此掌握这个ADC还是很有必要的。在省赛中没有用到扩展板的情况下,主要就是一路的ADC采样。其采样通过主板上那个电位器R37来调节电压进行捕获考察ADC。我们来看电路图:这里R37电位器与PB0相连。在看数据手册上PB0挂载了ADC。并且对应着ADC的通道8。代码部分这里分享一下如何快速的配置ADC和正常的配置;1、正常配置adc.cinclude "adc.h"void adc_init(void){ ADC_Ini
2022-03-12 02:45:40
1892
2
原创 蓝桥杯嵌入式串口【usart配置】
在蓝桥杯电子类的个人赛中,无论是单片机类还是嵌入式类的个人赛。串口【usart】一直都是一个重要的考点。本文还讲解了如何快速的配置usart。减少比赛时在配置上浪费的时间。对于串口原理可以参考——stm32串口原理、代码讲解。本文以串口2为例进行讲解。在嵌入式比赛官方给的数据手册我们可以知道PA2、PA3作为串口2进行收发。代码:uasrt.h#include "stm32f10x.h"void usart_init(void);unsigned char usart_data(USA
2022-03-08 09:12:26
1210
原创 【stm32】串口通信
串口通信一、串口通信协议原理二、usart功能框图三、stm32库一、串口通信协议原理串口在嵌入式系统当中是一类重要的数据通信接口,其本质功能是作为 CPU 和串行设备间的编码转换器。当数据从 CPU 经过串行端口发送出去时,字节数据转换为串行的位;在接收数据时,串行的位被转换为字节数据。应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。典型地,串口用于 ASCII 码字符的传输。通信使用3根线完成:地线,发送数据线,接收数据线。串口通
2022-03-07 17:17:06
7211
1
原创 通信的基本概念基础
前言在我们用单片机的时候是不是经常用到各种通信协议。像usart、i2c、spi等各种通信协议。那我们在用这些协议的时候,有没有尝试去想过什么是通信,通信是什么?我的见解是通讯即是指两个设备之间的数据传输或者IC芯片之间的数据传输。在总线原理上对于通信是这样解释的------通信系统是传递信息所需要的一切设备的总和。在这里我们由单片机和电脑之间的通讯讲解这个图。信源(发送端)编辑好要发送的信息,通过发送设备(单片机)进行对其数据处理,即将信源和信道进行匹配起来,对信源传输的数据经过编码的方式,变化
2022-03-06 16:19:40
1118
原创 蓝桥杯嵌入式高亮显示
在蓝桥杯嵌入式往年的一些真题上都有多次考核到高亮显示考点分为单行高亮和单个字节高亮在官方给的lcd.c的函数里面有这么几个是对高亮操作的函数void LCD_SetTextColor(vu16 Color); // 设置字体颜色void LCD_SetBackColor(vu16 Color); // 设置背景颜色void LCD_DisplayChar(u8 Line, u16 Column, u8 Ascii); //设置单个字节单行高亮:主要是这个函数void LCD_SetBac
2022-03-04 15:34:33
2888
2
原创 蓝桥杯嵌入式KEY配置(中断、扫描)
按键–在众多外设中也是仅此于led的最基本的、简单的外设。在本文介绍两种方法进行按键的驱动(中断、循环扫描)。对于中断不懂的可以看下我另外一篇文章:stm32中断蓝桥杯嵌入式的板子里面有四个按键,在原理图上我们可以看出当GPIO输入为低电平时导通。连接的IO口为PA0、PA8、PB1、PB2四个口。1、循环扫描key.c#include "key.h"#include "lcd.h"void key_init(void){ GPIO_InitTypeDef GPIO_InitStr
2022-03-03 16:23:28
1047
原创 有趣的程序备注
最近发现一批有趣的备注,分享给大家看看1、攻城狮篇 /* ,%%%%%%%%, * ,%%/\%%%%/\%% * ,%%%\c''''J/%%% * %. %%%%/ o o \%%% * `%%. %%%% |%%% * `%% `%%%%(__Y__)%%
2022-03-03 07:30:00
322
原创 蓝桥杯嵌入式 LED配置
在蓝桥杯嵌入式资源的配置里面LED的配置是最简单的、最基本的。他的原理其实简单的对GPIO的操作。值得注意的是他不是直接的对GPIO进行操作,而是对74HC573锁存器上进行操作。下面我们看看原理图。原理图上我们看到用到H D0-H D7(PC8-PC15)和N LE(PD2)引脚。但是这里加入了一个74HC573作为数据锁存器,所以每次操作需要给PD2一个下降沿。再看看锁存器:74HC573是拥有八路输出的透明锁存器,输出为三态门,是一种高性能硅栅CMOS器件。74HC573的八个锁存器都是透明
2022-03-02 11:57:48
491
原创 stm32 GPIO分析讲解
什么是GPIOGPIO(General Purpose Input& Output)是通用目的的输入/输出,是微控制器中最简单也是最常用到的外设,一般来说,由于资源有限,其他的外设往往要与GPIO端口复用芯片的引脚。GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。STM32 芯片的 GPIO被分成很多组,每组有 16 个引脚。一般来说最多拥有7组,GPIOA、GPIOB、…、GPIOG,7组端口。可以根据每个GPIO的端口的不同可以设置成不同的工作模式。
2022-03-01 22:37:16
3363
原创 stm32 中断(f4)
前言中断是什么?什么是中断?在学习 51 单片机时,我们就接触过中断,中断其实就是当 CPU 执行程序时,由于发生了某种随机的事件(外部或内部),引起 CPU 暂时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程就称为中断,引发中断地称为中断源。比如:看电视时突然电话响了,那么电话响就相当于中断源。有些中断还能够被其他高优先级的中断所中断,那么这种情况又叫做中断的嵌套。正文那么我们在学习中断的时候,就会必
2022-03-01 01:49:47
1918
原创 蓝桥杯嵌入式LCD显示与LED显示问题
在旧板stm32f1的板子上,我们正常编写蓝桥杯上的LED进行显示的时候,我们会发现烧录进去lcd与led的显示会出现混乱,这个是为什么呢?我们把视线拉倒原理图上看看LED和LCD部分。在原理图上我们看到LED和LCD都共用了(H D0-H D7)即PC8-PC15引脚。所以每次我们对LCD上进行操作都会影响到LED的显示。这也就造成我们板子上LCD与LED上的显示混乱。那么问题知道了,我们要怎么去解决这个问题呢。解决方法:操作LCD之前保存GPIOC相关寄存器的值,对LCD操作结束后,重新恢复
2022-02-28 16:22:52
5163
11
原创 stm32 时钟树的讲解
对于时钟,不了解的人可能不是很理解他的作用,稍微知道时钟的人一般都会这样解释“时钟是单片机的心脏、是单片机的脉搏、是心跳”。由此可见时钟的重要性。时钟为应用带来了高度的灵活性,用户在运行内核和外设时可选择使用外部晶振或者使用振荡器,既可采用最高的频率,也可为以太网、USB OTG FS 以及 HS、I2S 和 SDIO 等需要特定时钟的外设保证合适的频率。可通过多个预分频器配置 AHB 频率、高速 APB (APB2) 和低速 APB(APB1)。AHB 域的最 大频率为 168 MHz。高速 APB2
2022-02-26 19:32:20
4274
原创 蓝桥杯嵌入式第七届省题
第七届蓝桥杯嵌入式这一届的蓝桥杯省题他的用到的外设相对于来说还是比较多的,有用到ADC、EEPROM、USART、led、key这些外设,可以说除了没用到PWM、蜂鸣器之外,蓝桥杯嵌入式的考点涉及的外设大多都包含在里面了。可以说也是比较齐全了,不过我们也不要给自己太大的压力,把基本的配置学会了,main函数编写起来还是简单的。第七届题目要求是模拟液位警报系统,要求通过模拟电压信号(ADC)计算他液位高度,并在液位等级发生变化的时候通过串口发送到PC机上。下面我们看看具体的要求。1.液位高度、ADC
2022-02-25 17:06:50
1850
原创 蓝桥杯嵌入式第十届省题
蓝桥杯嵌入式第十届省题第十届的蓝桥杯的题目自我感觉不是很难,只要把相对应的资源外设配置好久没有多大的问题。如果ADC不会配置的话,这届的题目就可以说是凉了。这届的题目主要就是围绕着ADC去进行配置。我看有些大佬多用eeprom,我这里没有用到这个也实现了题目要求。也没啥bug,所以我就没有用eeprom了。接下来我们先看看这届的题目具体要求实现的功能、要求。这里的硬件框图看出,除了最基本的按键、led、lcd之外,就主要就是ADC的配置了。再看看基本的要求:这里说明要将ADC模拟电压在lcd上
2022-02-23 21:01:09
7610
2
原创 蓝桥杯嵌入式十一届省题
蓝桥杯嵌入式十一届省题一、分析这一届的蓝桥杯嵌入式的省题相对来说还是比较简单的,其中主要的难点也就是对于adc和两路固定频率可调占空比pwm的配置,把这两个解决了,main函数编写起来相对往届简单。这里题目主要涉及pwm、adc、key、led。对于pwm的配置我这里主要用到定时器的输出比较翻转模式TIM_OCMode_Toggle来进行处理,并且用到中断服务函数处理。对于adc的配置,也都是比较基本的了,就不多说了。二、赛题下面看代码部分。三、代码1.main函数#includ
2022-02-22 20:57:40
2406
4
vscode的翻译插件Comment Translate 一直翻译不了
2022-09-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人