- 博客(27)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 C++深入理解封装、继承、多态(一)
定义一个protected类型的文件指针,用于指向open的文件,同时不允许类外访问该指针。核心部分的函数都是虚函数,在派生类中定义,通过调用父类的public函数来使用这些虚函数,在子类继承后,这些虚函数被重写,在不同的子类里有不同的定义。要求使用该文件基类派生出两种文件操作类:磁盘文件和内存文件,其中内存文件由链表构成,长度可动态增加。也是利用ftell函数,先记录当前指针,然后把指针移到文件最后,使用ftell即可获取文件长度。以读写方式打开文本文件,返回文件指针,文件必须存在,否则返回NULL。
2024-07-05 15:21:23
1042
原创 关于linux帧缓冲机制介绍及使用其编写显卡驱动
以上就是fb_fix_screeninfo结构体的内容,是不可更改的,里面的内容都是根据用户的硬件填充的,记录的是硬件的固定信息。fb_fix_screeninfo和fb_var_screeninfo,fb_fix_screeninfo记录的是设备固定参数,fb_var_screeninfo记录的则是虚拟参数,下面先看看两个结构体的内容。在内存中通常是独立的。表示像素的各个颜色分量(如红色、绿色、蓝色等)被分离地存放在不同的平面中,但这些平面在内存中的排列方式是交错的,而不是完全独立的。
2024-07-03 10:10:14
1144
原创 关于linux捕捉鼠标事件的方法
data[1]、data[2]代表x与y的相对坐标,即本次鼠标移动与上次鼠标移动了多少坐标,向左则x为负,向下则y为负。如果事件的类型代码是EV_ REL,value的正数值和负数值分别代表两个不同方向的值。linux的设备都以文件形式存放,要读取鼠标,有两种方法,一种是通过/dev/input/mice,一种是通过/dev/input/eventx (x是标号,0,1,2..... 具体的进这个文件夹查看)。这里我的鼠标不支持读取相对坐标,因此鼠标只读取绝对坐标,注意滚轮事件属于相对事件。
2024-06-27 14:07:48
1052
原创 关于使用gcc链接动态库时,依赖顺序导致“未定义的引用”错误
LoadString在动态库MiniGUI中定义,但MiniGUIRes的链接放在了前面,导致找不到LoadSrting的定义。/lib/libMiniGUI.so:对‘LoadString’未定义的引用。2.在gcc中加入选项 -Wl,--no-as-needed。注意,逗号也是选项的一部分!1.手动更换动态库链接顺序。
2024-06-17 18:37:35
213
原创 gcc编译出现最后的链结失败:输出不可表示的节
make[1]: 离开目录“/home/a/MiniGui1.6.9/mde-1.6.9/tools”从ubuntu16开始默认启用pie,但minigui1.6.9版本比较老不支持pie。/usr/bin/ld: 最后的链结失败: 输出不可表示的节。加入编译选项 -no-pie即可。
2024-05-15 17:08:53
533
原创 编译minigui1.6.9的示例程序包mde-1.6.9时出现 ”对QVFB_bootstrap未定义的引用“
仔细查找发现如果在Linux上使用qvfb开发minigui的话,需要在运行minigui源文件包libminigui-linux-1.6.9中的./configure时,将附加--with-targetname=qvfb。/usr/local/openSrc/minigui/install/lib/libminigui.so:对‘QVFB_bootstrap’未定义的引用。有可能是因为64位Ubuntu和32位Ubuntu之间环境的问题,具体参考以下。用了该博主的方法,问题仍未得到解决。
2024-05-15 15:31:10
899
原创 编译minigui1.6.9的mde示例包时报错 “对sem_post未定义的引用” 等错误
/usr/local/lib/libminigui.so:对‘pthread_create’未定义的引用。//usr/local/lib/libminigui.so:对‘pthread_join’未定义的引用。//usr/local/lib/libminigui.so:对‘sem_post’未定义的引用。//usr/local/lib/libminigui.so:对‘sem_wait’未定义的引用。//usr/local/lib/libminigui.so:对‘sem_init’未定义的引用。
2024-05-15 15:01:29
275
原创 ubuntu编译qt-x11-3.3.8时报错./include/qvaluelist.h:88:13: error: ‘ptrdiff_t’ does not name a type
在报错的文件中添加 #include <stddef.h>相对于新libc库的问题。
2024-05-15 10:36:16
341
原创 RTOS:任务的创建与删除
本次实验创建三个任务,start_task,led0_task,led1_task,分别作为启动任务,LED0以1s间隔闪烁、LED1以2s间隔闪烁。编写简单的RTOS代码,测试RTOS移植是否成功,同时学习RTOS中任务的创建与删除。若RTOS移植没有问题,则可观察LED0以1s间隔闪烁,LED1以2s间隔闪烁。
2023-03-16 14:54:39
244
原创 RTOS:CubeMX移植注意事项
移植完成后,编译会报错,提示缺少FreeRTOSConfig.h文件,此文件是对RTOS的功能进行裁剪和配置的重要文件,可以在 FreeRTOS/Demo/相应例程 内找到,但根据不同需要,需进行详细阅读。至此就可以快乐的学习RTOS啦。
2023-03-14 22:11:28
566
原创 RTOS学习笔记:RTOS基础知识
Task1运行完一个时间片后Task2运行,Task2运行一个时间片后Task3运行,若遇阻 塞,则直接跳到下一任务循环,不管有没有运行完。就绪列表:pxReadyTaskLists[x],其中x代表任务优先级数值,32位数组,当某个位置1 时,代表所对应的优先级就绪列表有任务存在。运行态:正在执行的任务,该任务就处于运行态,STM32中,同一时间仅一个任务 处于运行态。主要是针对优先级不同的任务,每个任务都有一个优先级,优先高的任务可以抢占 优先级低的任务。
2023-02-28 23:04:26
556
原创 蓝桥杯嵌入式 STM32G4 扩展板 DS18B20温度传感器
一、原理及引脚查阅扩展板引脚图跳线帽连接P4.6--P3.6(PA6)控制DS18B20为单线协议,对时序的要求较为苛刻。控制单个DS18B20的配置步骤如图1.初始化的时序图:主机首先发出一个480-960us的低电平脉冲(复位),然后释放总线为高电平,并在随后的480微秒时间内,对总线进行检测,如果有低电平出现说明总线上有器件已做出应答。若无低电平出现一直都是高电平说明总线上无器件应答。作为从机的Ds18B20上电后就一直检测总线上是否有480~960微秒的低
2022-05-22 14:35:49
1170
原创 蓝桥杯嵌入式 STM32G4 扩展板 ADC按键
一、模块引脚及原理原理图如下,使用ADC采集端口电压,每一个按键的阻值都不同,通过不同的电压判断是哪一个按键按下。(如何找到每一个按键的电压范围后面会讲)由图可知,ADC_KEY接PA5二、Cubemx的配置配置PA5为ADC2的通道13三、生成工程编写ADC获取函数如果想要知道每一个按键的转换值,使用LCD将读取的数据显示出来即可,用于后续按键的判断编写按键判断函数本质其实就是读电压,根据不同电压判断是哪个按键按下了...
2022-05-22 14:27:44
462
原创 蓝桥杯嵌入式 STM32G4 扩展板 光敏电阻
一、光敏电阻AO/DOAO是模拟量 DO是数字量AO接PA4 DO接PA3,使用ADC读取AO口电压,使用GPIO读取DO口电平光敏电阻随光照增强,阻值降低 则AO口的电压也降低。使用ADC采集AO端口电压即可。二、Cubemx的配置如图配置三、生成工程第一步:编写ADC采集函数第二步;在主函数的while里编写如下程序,在LCD上显示AO口电压以及DO口电平状态...
2022-05-22 14:20:53
673
原创 蓝桥杯嵌入式 STM32G4 MCP4017可编程电阻
MCP4017为可编程电阻查阅产品手册可知,MCP4017使用I2C通讯协议,引脚为PB6,PB7 ,控制的电阻连接至PB14,同时跳线帽连接J15.1与J15.2如下图,Rs为单个电阻阻值;RWS为总阻值,与R17串联,两者对VDD电压进行分压,可以通过测量PB14的电压判断可编程电阻的阻值。MCP4017的默认总阻值为100kΩ ,对应0-127个档位,当寄存器为0时,阻值为0;当寄存器为0x7F时阻值为100k。代码编写查阅MCP4017手册,写操作如图..
2022-04-23 15:26:29
3732
3
原创 STM32G4 蓝桥杯嵌入式 定时中断 定时器基础定时
本节对定时器的定时作用做介绍。下面是CubeMX的定时器配置:1.使用微控制器内部时钟2.设置预分频系数PSC和计数器ARR的值 (这两个值决定了定时器的频率)定时器时钟频率的计算:微控制器主频这里设置的是80MHz所以按上图,PSC = 79 ARR = 999计算得出定时器计数频率为1000Hz即定时中断每1ms触发一次使能中断:生成MDK工程文件后调用定时中断回调函数,定时器每产生一次中断都会运行一次此函数如果按照上述设...
2022-04-23 14:33:52
1183
原创 STM32G4 蓝桥杯嵌入式 IIC AT24C02储存器
此模块是我初次接触到数据手册,也是第一次接触到通讯协议,所以在b站录有视频,包括IIC的原理,以及在蓝桥杯竞赛板上实现对EEPROM的读写,感兴趣可移步:STM32G431 蓝桥杯嵌入式 AT24C02储存应用程序设计_哔哩哔哩_bilibili一、I2C通信协议简介 I2C 通信协议(inter-integrated circuit)因为使用引脚少,硬件实现简单,可扩展性强,不需要USART、CAN等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)之间的通讯...
2022-04-16 16:20:23
3319
原创 STM32G4 蓝桥杯嵌入式 RTC
蓝桥杯实训平台板载RTC时钟,可以比较稳定的计算日期与时间,并且是STM32唯一可掉电继续工作的外设 (纽扣电池供电)。一、功能纯粹计时触发中断: 闹钟中断,用来产生一个软件可编程的闹钟中断。 秒中断,用来产生一个可编程的周期性中断信号(最快可达一秒)溢出中断,指示内部可编程计数器溢出并回转为0的状态。(一般不使用溢...
2022-04-16 15:57:24
655
原创 STM32G4 蓝桥杯嵌入式--串口
串口的简单定义: 串行接口(Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。(百度百科)STMG431上的串口使用的是RS232进行串口通信,同时自带USB转串口。如图,设备左上角USB接口为数据传输口,一般代码的烧录是通过此接口下载,串口的通...
2022-03-10 17:25:56
1904
原创 蓝桥杯嵌入式 STM32G4 合集
省赛部分:STM32G4 蓝桥杯竞赛板 入门流水灯STM32G4 蓝桥杯竞赛板 外部中断按键处理按键的长按,短按,以及按键按下后不松开,只计算一次有效按下STM32G4 蓝桥杯竞赛板 LCDSTM32G4 蓝桥杯竞赛板 频率控制器STM32G4 蓝桥杯竞赛板 ADC及多通道采集(待更新)国赛部分:(待更新)省赛真题:(待更新)国赛真题:(待更新)...
2021-11-11 15:53:11
1282
原创 STM32G4 蓝桥杯嵌入式 ADC及多通道采集
ADC单通道采集ADC工作原理:ADC通过将模拟量转化为数字量,例如将连续的电压信号转化为离散的数字信号。查阅原理图可知,蓝桥杯竞赛板有两个模拟电压输出:R37与R37分别对应PB15与PB12CubeMX配置:配置PB15为ADC_IN15开启ADC2的通道15,其余配置均可默认。编写代码:uint16_t Get_ADC(void){ uint16_t temp = 0; HAL_ADC_Start(&hadc2); ..
2021-11-11 15:46:46
6873
4
原创 STM32G4 蓝桥杯嵌入式 LCD
板载一块分辨率320x240的LCD屏。蓝桥杯比赛使用LCD的操作非常简单原理:LCD原理较为复杂,底层驱动很麻烦,大致是控制屏幕上的像素点显示字符。但一般LCD购买时厂家自带LCD驱动,拿来直接用就可以,因为我们是搞嵌入式,不是LCD开发的。蓝桥杯比赛的时候也会提供LCD驱动。直接上手原理图:可以看到LCD使用的引脚非常多,PC0--PC15,PB5,PB8,PB9和PA0;CubeMX配置:按照原理图将引脚配置为GPIO_OUTPUT编程部分:.
2021-10-24 14:31:18
1251
5
原创 STM32G4 蓝桥杯嵌入式 定时器的输入捕获
板载频率控制器有两个,R39和R40,是板上的两个蓝色小旋钮(R37和R38是电压输出)原理:定时器输入捕获模式 捕获待测信号连续两个上升沿(或下降沿),在CRR计数器内计数,当系统时钟配置为80MHz时,将PSC设置为79,即80分频,CRR计数器以1MHz的速率进行计数。在第一个上升沿(或下降沿)出现时,CRR计数器被清零,第二个上升沿(或下降沿)出现时,记录该计数值并产生中断,在中断函数内即可读取该计数值。使用,计算频率,N为CRR计数值。注意,16位计数器的最高计数值为65.
2021-10-22 18:44:16
1043
原创 按键的长按,短按,以及按键按下后不松开,只计算一次有效按下
判断按键长按还是短按,就需要引入时间的概念了。对于STM32G431RBT6这块板子来说,直接开启一个定时器用来检测即可。这里要讲到一个定时器时间计算公式TLCK指的就是系统时钟频率,设置为100MHz的话,用公式计算,定时器6就是10ms产生一次定时中断。生成工程文件后,编程代码如下:这样就可以每10ms检测一次按键unsigned int count = 0,flag = 0;void HAL_TIM_PeriodElapsedCallback(TIM_Ha..
2021-07-31 17:58:07
3761
3
原创 STM32G4 蓝桥杯嵌入式 入门流水灯
初学G431这块板子的时候,用的是STM32cubeMX 和keil-MDK ,在百度上搜到的全是标准库的代码,但是cubeMX用的是HAL库 代码很不一样,而且对于引脚的初始化,标准库的方式需要手动进行配置,但如果使用cubeMX的话,所有初始化配置都由代码转变成可视化图形。使用这两个软件进行开发G431的板子上自带了DAP转串口,只要接上电脑就可以使用(win10);在写流水灯代码之前 我们要下载G431的固件包 这些网上教程其实已经非常详细了。下面说说几个要注意的地方...
2021-07-16 15:19:39
4753
2
VxWorks掉电安全文件系统
2024-08-16
在vm virtualbox虚拟机下,使用framebuffer的问题
2024-06-13
Minigui编译时mde示例程序包时出现问题
2024-05-13
Linux gcc编译 宏定义中##问题
2024-05-10
GPIO初始化失败 以及时钟使能问题
2021-07-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人