- 博客(88)
- 收藏
- 关注
原创 RT-Thread PIN设备
PIN设备又叫GPIO设备,是MCU输入输出的一种设备,RT-Thread将GPIO抽象成PIN设备,以实现对GPIO的基本操作。比如上面两个GPIO设备,其中一个作为输出控制LED灯的亮灭,一个作为输入判断按键的高低电平。对于GPIO的操作都有以下几点:设置GPIO的方向,是作为输入还是输出设置GPIO的属性,是上拉,下拉,还是推挽、开漏等设置GPIO的高低电平或者读取GPIO的电平如果需要中断,还需要设置GPIO的中断有些GPIO能复用成其他外设功能,比如ADC、UART等。
2024-06-18 18:54:57
960
原创 嵌入式杂记 - MDK的Code, RO-data , RW-data, ZI-data意思
在嵌入式开发中,我们经常都会使用一些IDE,例如MDK和IAR。在这些IDE编译完成之后,通常会在编译界面中会出现如下的数据,很多初学者会对这些数据不太熟悉,本篇文章就以MDK为例简单介绍一下这几个数据的意思,IAR也是类似。
2023-12-08 22:03:56
3366
原创 嵌入式杂记 -- MCU的大小端模式
在进行MCU开发的时候,我们需要注意MCU的数据存储模式,在嵌入式中有两种不同的存储模式,分别是大端模式和小端模式。
2023-11-13 13:33:33
808
原创 STM32F4X SDIO(九) 例程讲解-SD卡擦除、读写
本节例程基于野火电子的STM32F407的SD卡读写例程进行讲解。上一节中讲解了SD卡设置成4下模式的步骤,本节将会讲解SD卡的擦除和读写操作。
2023-11-11 17:01:47
1195
原创 STM32F4X SDIO(八) 例程讲解 设置SD卡 & SDIO 总线宽度
在上一节中我们已经初始化了SD卡,并获取了SD卡的CID、CSD和RCA地址,接下来就可以对SD卡进行读写操作了,但是在进行读写操作时,还需要提高SD卡的总线宽度和SDIO_CK时钟,加快传输速度。程序经过上面的步骤之后,SD卡就进入了准备状态,此时我们需要将SD卡设置成4位总线的模式,但是并不是所有的SD卡都支持4位总线模式,所以我们需要通过查询SD卡的。这个函数是用来读取SD卡数据线上的数据,返回的一个32位的数据,因为SCR寄存器是64位的寄存器,所以我们需要连续读取两次。
2023-11-07 10:27:06
1035
原创 STM32F4X SDIO(七) 例程讲解-SD_InitializeCards & SD_GetCardInfo
本节例程基于野火电子的STM32F407的SD卡读写例程进行讲解。上一节中讲解了SD卡上电过程,这节将会讲解一下SD卡的初始化过程,包括获取SD卡的CID、CSD和SD卡RCA地址。
2023-11-06 12:22:41
286
原创 STM32F4X SDIO(六) 例程讲解-SD_PowerON
从本节开始将会结合实际的例程讲解SD卡使用,包括SDIO控制器初始化,SD卡初始化,SD卡擦除、SD卡读写等。本例程将会使用野火电子的STM32F407的SD卡读写例程进行讲解。
2023-11-03 11:00:45
1025
原创 STM32F4X SDIO(五) SDIO库函数使用
本节主要讲解STM32F4X的SDIO库函数的使用,后续的例程讲解将会用库函数的方法进行编程,所以先提前了解一下SDIO的库函数。
2023-11-01 12:31:23
337
原创 STM32F4X SDIO(四) SDIO控制器
STM32F4X内部有一个SDIO控制器,开发者可以使用这个控制器跟SD卡进行通信,下面就来简单了解一下STM32F4X的SDIO控制器的使用。
2023-10-31 14:04:37
714
原创 STM32F4X SDIO(三) SD卡命令与响应
上一节说过SD卡的操作都是基于命令与响应,写操作有写操作的命令,读操作有读操作的命令,这节就来简单看一下SD卡都有哪些命令跟响应。
2023-10-30 09:09:42
1050
原创 STM32F4X SDIO(一) SD卡介绍
在之前的章节中,讲过有关嵌入式的存储设备,有用I2C驱动的EEPROM、SPI驱动的FLASH和MCU内部的FLASH,这类存储设备的优点是操作简单,但是缺点也很明显,就是其存储的容量都不大,都只能存储一些小数据。除了上面说到的几类存储设备之外,还有一种存储设备,就是日常生活中常见的SD卡,SD卡的特点是其存储容量非常大,可以做到几十G的容量,但是其缺点就是操作复杂。
2023-10-28 21:00:45
832
原创 Pyside6 QTextEdit
Pyside6 QTextEditQTextEdit使用QTextEdit常用函数文本编辑类函数文本框格式设置函数设置文字颜色设置文字背景颜色设置文字格式设置文本框样式程序设置界面设置QTextEdit信号textChanged信号完整程序界面程序主程序QTextEdit类提供了一个用于编辑和显示纯文本和富文本的组件,更多关于QTextEdit的使用可以参考下面的文档https://doc.qt.io/qtforpython-6/PySide6/QtWidgets/QTextEdit.htmlQTex
2023-10-24 15:49:17
1111
原创 Pyside6 QFile
Pyside6 QFileQFile使用QFile常用函数文件编辑类函数判断文件是否存在重命名文件删除文件函数复制文件文件内容操作类函数文件打开函数文件关闭函数文件读取函数read函数使用readLine函数使用readAll函数使用文件写入函数追加方式写文件重写方式写文件程序界面程序主程序Pyside6的QFile类提供了一个读取和写入文件的接口,QFile可以操作文本文件和二进制文件。更多关于QFile类的说明可以参考下面的文档。https://doc.qt.io/qtforpython-6/PyS
2023-10-23 11:25:26
323
原创 Pyside6 QFileDialog
Pyside6 QFileDialogPyside6 QFileDialog常用函数getOpenFileNamegetOpenFileNamesgetExistingDirectorygetSaveFileName程序界面程序主程序Pyside6 QFileDialog提供了一个允许用户选择文件或目录的对话框。关于QFileDialog的使用可以参考下面的文档https://doc.qt.io/qtforpython-6/PySide6/QtWidgets/QFileDialog.html#qfil
2023-10-21 15:20:03
1639
4
原创 Pyside6 QMessageBox
除了上面5种基本消息框之外,我们还可以自己定义消息框函数作用setText设置消息框文本设置消息框内容设置消息框标准按钮设置消息框默认按钮,也就是默认选择的按钮msgBox.setText("文本内容已经改变.") # 设置消息框文本msgBox.setInformativeText("是否需要保存?") # 设置消息框内容。
2023-10-20 15:32:46
755
原创 Pyside6 QLineEdit
Pyside6 QLineEditPyside6 QLineEdit文本操作函数文本限制函数设置文本框最大输入个数设置只读设置输入格式文本格式函数设置密码格式设置文本格式程序界面程序主程序QLineEdit控件是单行文本编辑器.用于接收用户输入的字符串数据,并显示字符串数据,输人的整数和浮点数也会当作字符串数据。QLineEdit的功能非常多,下面就来简单说一下常用的一些功能。更多关于QLineEdit的资料可以参考下面的文档。https://doc.qt.io/qtforpython-6/PySide
2023-10-20 13:48:06
653
原创 Pyside6 Qlabel显示图片、文本
Pyside6的Label控件的作用是显示文本、图片等对象,其使用非常简单。更多关于QLabel的资料可以参考下面文档。
2023-10-19 19:37:47
2284
原创 Pyside6 资源系统和资源文件使用
在开发APP过程中,经常需要使用一些文件,图片之类的资源,这些资源都有一个特点,就是跟用户的使用环境无关,也就是说必须独立于系统之外。为此Pyside6引入了资源系统的概念,开发者可以把一些APP使用的资源放到资源系统中,使其成为APP独立的资源管理器,这样APP就可以任何环境下使用资源管理器中的资源。
2023-10-19 15:04:06
595
原创 Pysied6 ComboBox
Pyside6的ComboBox下拉列表框,可以给用户提供一系列的选项,下面就来简单了解一下Pysied6 ComboBox的使用。更多关于ComboBox的使用可以参考下面的文档。
2023-10-19 11:24:14
683
原创 STM32F4X TFTLCD ST7735S使用
TFT-LCD 即薄膜晶体管液晶显示器。其英文全称为:Thin Film Transistor-Liquid Crystal Display。TFT-LCD与无源 TN-LCD、STN-LCD 的简单矩阵不同,它在液晶显示屏的每一个像素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。TFT-LCD 也被叫做真彩液晶显示器。
2023-10-18 14:55:55
3637
6
原创 STM32F4X OLED使用
STM32F4X OLED使用OLED简介OLED使用OLED驱动芯片SSD1309引脚SSD1309通信协议4线SPI模式3线SPI模式I2C模式OLED地址确认8080接口OLED 8080写模式OLED 8080读模式6800接口SSD1309显示原理SSD1309显存大小SSD1309显存分布SSD1039数据显示MCU操作SSD1309显存方法OLED取模字符取模图片取模STM32F4X OLED例程OLED关键函数讲解数据传输函数画点函数写GRAM完整例程oled.coled.holedfont
2023-10-14 15:08:20
356
原创 Pyside6 QtabWidget
Pyside6 QtabWidgetQtabWidget使用QtabWidget常用方法设置标签页的标题程序设置界面设置设置当前显示的标签页程序设置界面设置删除标签页程序设置界面设置添加标签页程序设置界面设置例程界面程序主程序QtabWidget是Pyside6中的一个标签页控件,其作用可以是让用户更好划分不同的页面设计功能,将跟功能实现相关的控件都放到同一个标签页中,可以让界面更加简洁美观。更多关于QtabWidget的资料可以参考下面的文档。https://doc.qt.io/qtforpython
2023-10-12 16:36:11
960
原创 STM32F4X I2C LM75
LM75A是NXP半导体公司推出的一具有I2C接口的数字温度传感器芯片,可广泛运用于系统温度管理、个人计算机、电子设备、工业控制器等方面。I2C 总线接口,器件地址 7 位从机地址 1001xxx,同一总线上可以外扩 8 个器件;供电范围:2.8V~5.5V,温度范围:-55℃~+125℃;11 位 ADC 提供温度分辨率达 0.125℃;温度精度:±2℃(-25℃~100℃) ±3℃(-55℃~125℃)可编程温度阈值和滞后设定点;
2023-10-12 14:02:41
1031
1
原创 Pyside6 ProgressBar
在应用程序中,经常会遇到一些等待事件,比如等待软件安装完成,等待设备的响应等。为了给用户一个直观的感受,通常都会利用进度条告诉用户等待的时间。Pyside6提供了进度条控件供开发者使用。进度条通常都是根据当前等待事件的时间占总时间的百分比,然后将此百分比通过计算显示到进度条上,所以进度条通常会提供修改当前进度数值,设置进度范围等操作。更多关于Pyside6的ProgressBar的使用请参考以下文档。
2023-10-11 10:02:16
1234
原创 STM32F4X 内部FLASH使用
在嵌入式开发中,经常需要实时保存一些数据。如果工程的代码量比较大的话可以使用一些外部的存储器件进行数据的保存。如果工程的代码量比较小则可以利用MCU的内部FLASH进行数据的存储。
2023-10-09 17:32:26
556
原创 Pyside6 QRadioButton
Pyside6 QRadioBoxQRadioButton使用QRadioButton分组QRadioButton设置文本代码设置界面设置QRadioButton禁用和启用代码设置界面设置QRadioButton设置默认值代码设置界面设置读取QRadioButton状态QRadioButton样式设计代码设置界面设置完整程序界面程序主程序QRadioButton单选框,QRadioButton是一个可以切换选中和未选中的控件,它的作用跟QCheckBox复选框一样,但是复选框可以实现多选多的功能,而单选框
2023-10-09 13:26:52
651
原创 Pyside6 QCheckBox
QCheckBox是一个选项按钮,可以打开(选中)或关闭(未选中)。复选框通常用于在应用程序中表示某些功能的启用或者禁用。
2023-10-09 09:36:53
354
原创 Pyside6 QPushButton
按键或命令按键可能是任何图形用户界面中最常用的小部件。按下(点击)按键可以使计算机执行某些操作,或回答一个问题。Pyside6给用户提供了按键控件,用户可以设置按键的触发条件来实现需要的功能。
2023-10-08 10:33:30
739
原创 Pyside6 安装和简单界面开发
对于Python的GUI开发来说,Python自带的可视化编程模块的功能较弱,PySide是跨平台应用程序框架Qt的Python绑定,Qt是跨平台C++图形可视化界面应用开发框架,自推出以来深受业界盛赞。PySide由Qt公司自己维护,允许用户在Python环境下利用Qt开发大型复杂GUI。用Python简洁的语法调用PySide6的各种可视化控件的类,可以快速搭建用户的图形界面,PySide6开发的GUI程序可以运行在所有主要操作系统上。
2023-10-07 16:00:52
5041
8
原创 STM32F4X UCOSIII 互斥量
假设有一个洗手间,洗手间里面有一把锁,假如现在游客A要进入洗手间,进入洗手间之后把锁锁上了,这时游客B也想进入洗手间,但是因为此时已经有人在洗手间,所以游客B无法进入,所以此时游客B只能在门外等,一直等待游客A上完洗手间之后,把锁打开,游客B才可以进入。在上面的例子中,洗手间是共享资源,洗手间里面的锁是互斥量,游客A和游客B是两个任务。下面来看一下有优先级继承的效果,同样地也是假设系统中有3个任务,分别是低优先级任务L,中优先级任务M和高优先级任务H。:不管该互斥量上是否有挂起的任务,直接删除互斥量。
2023-10-07 11:26:35
100
原创 STM32F4X UCOSIII任务消息队列
之前的章节中讲解过消息队列这个机制,UCOSIII除了有内核消息队列之外,还有任务消息队列。在UCOSIII中,每个任务内部都会有一个内嵌消息队列。在大多数情况下,任务消息队列可以代替内核消息队列。
2023-09-30 11:33:58
203
原创 STM32F4X UCOSIII任务信号量
之前的章节中讲解过信号量这个机制,UCOSIII除了有内核信号量之外,还有任务信号量。在UCOSIII中,每个任务内部都会有一个32位的内嵌信号量。在大多数情况下,任务信号量可以代替内核信号量。
2023-09-28 11:14:26
100
原创 STM32F4X UCOSIII软件定时器
定时器在MCU中是一个很常用的外设,其作用是可以在某个事件点触发MCU中断,告知MCU处理事情。定时器跟生活中的闹钟很类似,可以设置闹钟每天什么时候响,还能设置响的次数,是响一次还是每天都响。定时器也有硬件定时器和软件定时器之分。
2023-09-25 19:13:26
460
原创 STM32F4X UCOSIII 事件集
事件在RTOS中也是一种任务间同步的机制,事件不能传递数据。跟信号量不同的是,事件可以实现一对多,多对多的同步,也就是一个事件可以唤醒多个任务,一个任务也可以等待多个事件,也可以是几个事件都发生后才唤醒任务进行事件处理。同样,也可以是多个任务同步多个事件。
2023-09-22 11:12:50
176
原创 STM32F4X UCOSIII 信号量
在以往的裸机编程中,如果我们需要判断某个事件是否已经发生,通常会使用一个标志位来进行判断,当事件已经发生时,就将该标志位置1,否则就将该标志位置0。但是有了RTOS之后,我们可以用信号量来代替裸机中的标志位。
2023-09-21 14:23:06
100
原创 STM32F4X UCOSIII 消息队列
中断和任务都可以往消息队列里面发送消息,在消息发送之前,消息列队会先判断当前的消息队列列表里面是否已经满,当消息队列还没满的时候,会把要发送的数据放到消息队列的消息列表中,如果当前消息队列的列表已经满,则会返回一个错误代码,同时入队失败。当消息队列不再使用时,可以调用消息队列删除函数,删除消息队列,此时消息队列中的所有数据都会删除,删除后的消息队列不能再次使用。消息队列在创建时,需要用户自定义消息队列可存放的数据个数,当消息队列创建成功时,消息队列的数据存放个数就不能改变。下图画出了消息队列的工作机制。
2023-09-20 17:35:26
196
3
原创 STM32F4X UCOSIII任务
在日常生活中,我们要完成一个问题时,一般都会把一个大问题分解成若干个小问题,当每个小问题依次被解决时,大问题也随之被解决。同样地对于MCU来说也是如此,通常在没有RTOS的情况下,一般我们都会把所有的业务逻辑都放到main函数里面进行解决,但是随着业务逻辑的不断增多,就会发现把所有的业务逻辑都放到main函数里面就会显得特别臃肿,而且实时性也不好。RTOS可以把一个很复杂的业务逻辑分成一个个的任务,每个任务都可以根据自己的事件片进行调度,从而使程序更加简洁,提高实时性。
2023-09-19 15:19:12
134
原创 STM32F4X SPI W25Q128
SPI全称是Serial Peripheral Interface,又叫串口外围设备接口,是由Motorola(摩托罗拉)公司开发的一种在设备之间进行通信的协议。SPI是一种全双工同步串行通信协议,其通信过程只需要4根信号线,SPI主机可以连接多个SPI从机。目前很多的传感器,FLASH存储器件都使用SPI通信协议。
2023-09-17 22:20:30
410
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人