STM32专区
文章平均质量分 70
啵啵520520
这个作者很懒,什么都没留下…
展开
-
STM32 HAL TM1637使用
注意:TM1637在进行读写时需要应该应答信号反馈,当没有应答时容易则一直while循环,这是一个弊端。TM1637属于一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路。本文主要使用MCU是STM32 ,CubeMX+Keil5进行开发,使用HAL库。简介:TM1637可以带动16个按键以及做数码管驱动。原创 2024-05-15 16:51:22 · 291 阅读 · 0 评论 -
STM32 HAL TM1638读取24个按键
TM1638属于一款LED驱动控制专用电路,其特性如下:引脚定义如下在实际使用中,我们只需要使用三个单片机引脚就可以进行控制。分别是。原创 2024-05-15 16:11:06 · 919 阅读 · 0 评论 -
STM32 HAL库 利用CH376进行USB文件读写
CH376芯片 是沁恒的一款文件管理控制芯片,用于单片机系统读写 U 盘或者 SD 卡中的文件。同时可以使用 CH376 操作 USB 键盘鼠标,以及打印机等各种 USB 设备。CH376 支持三种通讯接口:8 位并口、SPI 接口或者异步串口CH376芯片在前期使用中,配置也出现问题,主要是INT脚返回不了中断,一但去写就会返回fa报错,后面换了模块有问题,估计是硬件那里有问题。但现在已经解决了注意:在CH376创建文件夹、文件时只能大写英文,小写会出现问题。原创 2024-04-17 16:51:37 · 1172 阅读 · 0 评论 -
Keil软件生成bin文件
加上脚本后,还需要将编译后的文件存放于什么位置。首先需要在keil的魔法棒里将运行脚本加上。原创 2024-02-20 09:14:14 · 247 阅读 · 0 评论 -
STM32 HAL NTC(3950 10k)查表法
NTC(Negative Temperature Coefficient)是指随温度上升电阻呈指数关系减小、具有负温度系数的热敏电阻现象和材料。该材料是利用锰、铜、硅、钴、铁、镍、锌等两种或两种以上的金属氧化物进行充分混合、成型、烧结等工艺而成的半导体陶瓷,可制成具有负温度系数(NTC)的热敏电阻。其电阻率和材料常数随材料成分比例、烧结气氛、烧结温度和结构状态不同而变化。现在还出现了以碳化硅、硒化锡、氮化钽等为代表的非氧化物系NTC热敏电阻材料。而图中的下面则是接NTC的接口。原创 2024-02-02 16:43:28 · 976 阅读 · 0 评论 -
STM32 单片机重启(查看上次重启原因)
以下代码,识别是那种方式进行复位的,只需要将自己在那种方式复位运行的程序添加进去即刻,在这里面尽量进行一些事件更改,不要进行长时间任务运行。STM32启动后可以识别本次启动是对应哪一种复位源,从而可以根据复位源的状态,做一些特殊处理。RCC_FLAG_PINRST是RESET管脚产生的复位。RCC_FLAG_IWDG1RST是内置看门狗产生的复位。RCC_FLAG_WWDG1RST是外置看门狗产生的复位。RCC_FLAG_PORRST是上电复位(冷启动)RCC_FLAG_SFTRST是软件重启产生的复位。原创 2024-01-17 17:33:12 · 2094 阅读 · 2 评论 -
STM32G030F6P6读写flash失败问题(HAL)
最开始做项目选用的单片机是STM32F030F4P6,但是在后期使用中发现,我的FLASH(16K)不够用了,就选择了STM32G030F6P6来进行项目使用,主要是价格便宜,资源够用。在F030使用的flash拿到G030上来发现不可使用,就进行了一些修改,但是这个时候就出现了报错,在进行flash擦除的时候报错。但是手册给出是64位写,所以这里进行了报错,然后将这里改成下面函数,整个程序的读写就没有问题了,在此问题就得到了解决。返回我打印了这个error到底是多少,发现其值为0x80,发现报的错误是。原创 2023-12-27 15:50:39 · 2002 阅读 · 0 评论 -
STM32 HAL 使用FATFS文件系统
系统引导扇区:引导程序,以及文件系统信息(扇区字节数/每簇扇区数/保留扇区数等)文件分配表:记录文件存储中簇与簇之间连接的信息根目录:存在所有文件和子目录信息(文件名/文件夹名/创建时间/文件大小)数据区:文件等数据存放地方,占用大部分的磁盘空间FAT文件系统用“簇” 作为数据单元,一个“簇”由一组连续的扇区组成,而一个扇区的大小为512字节。所有的簇从2开始进行编号,每个簇都有自己的地址编号,用户文件和数据都存储在簇中。FATFS是专门用于小型嵌入式系统的通用FAT/exFAT文件系统模块。原创 2023-12-22 17:15:28 · 982 阅读 · 0 评论 -
STM32之关于SD卡
SD总线上的通信基于命令和数据位流传输。命令:应用相关命令(ACMD)和通用命令(CMD),通过命令线CMD传输,固定长度48位响应:SD卡接收到命令,会有一个响应,用来反应SD卡状态。有2种响应类型:短响应(48位,格式与命令一样)和长响应(136位)。数据:主机发送的数据 / SD发送的数据。SD数据是以块(Block)形式传输,SDHC卡数据块长度一般为512字节。数据块需要CRC保证数据传输成功。卡识别模式和数据传输模式。系统复位后,主机和SD卡都处于卡识别模式,主机在总线上找设备;原创 2023-12-22 15:42:23 · 1114 阅读 · 0 评论 -
STM32笔记
通过屏蔽位,可以过滤出特定的标识符。在上面的示例中,定时器中断服务函数 TIM_IRQHandler() 首先通过 __HAL_TIM_GET_FLAG() 函数检查是否发生了定时器的更新事件(即更新标志位被置位),然后使用 __HAL_TIM_CLEAR_FLAG() 函数来清除更新标志位。在上面的示例中,我们使用 HAL_CAN_ActivateNotification() 函数来启用 CAN_IT_RX_FIFO0_MSG_PENDING 中断,并在回调函数中处理接收到的 CAN 帧。原创 2023-11-21 19:02:32 · 1605 阅读 · 0 评论 -
ADC常见的一些滤波算法
对于目前这些ADC采样算法而言,在项目中遇到对应问题去做对应的算法进行优化得到的参数,只能尽量让ADC数据更加符合项目所需,后续遇见其他算法,就继续添加在这里让大家一起用。N值的选取:流量,N=12;液面,N=4 ~ 12;如果在计数器溢出的那一次采样到的值恰好是干扰值,则会将干扰值当作有效值导入交易系统。如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值。对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差。对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差。原创 2023-11-07 22:02:22 · 362 阅读 · 0 评论 -
LVGL的初步了解以及移植到STM32
是最受欢迎的免费开源嵌入式图形库,可为任何MCU、MPU和显示器类型创建漂亮的用户界面。使用,使用拖放UI编辑器来简化开发。原创 2023-01-01 14:56:19 · 4365 阅读 · 0 评论 -
STM32学习之Keil5软件配置
代码编写环境可以让编写者在代码编写上有一定的好处,从而得到高效的代码编写。本次笔者写的是一些市面上常用的嵌入式开发软件Keil5,在初始化使用软件界面需要进行配置的。主要分为五大部分(文本美化、代码编辑技巧、查找和替换技巧、工程编译问题定位、窗口视图管理)。原创 2022-11-30 11:24:09 · 5469 阅读 · 0 评论 -
基于STM32的u8g2移植以及学习
U8g2是嵌入式设备的单色图形库。主要应用于嵌入式设备,包括我们常见的单片机使用,最常用的是OLED屏或者LCD屏进行使用的一个库;我们常用的OLED屏其内部原理一个M x n 的像素点阵,想显示什么就得把具体位置的像素点亮起来。对于每一个像素点,有可能是1点亮,也有可能是0点亮;其坐标系如下所示。原创 2022-11-28 17:45:27 · 4834 阅读 · 4 评论 -
C语言将“数字转换成字符串”
根据自己需要将前面的uint8_t可以改成char,下面的uint8_t是使用给OLED屏的。后续有其他的需求再在此后面添加,进行增加其他知识。原创 2022-11-14 15:06:44 · 1006 阅读 · 0 评论 -
STM32HAL库使用ESP8266模块
ESP8266一共具有3种工作模式,这三种工作模式softAP 模式,station 模式,softAP + station 共存模式三种。这三种模式对应着三种不同的状态。1、station 模式此时的ESPP8266模块可以当作是一个客户端,可以向服务端进行数据的下载与传输,可以比喻成此时的ESP8266就是一个不能开热点的手机,一般这种模式用于远距离传输。2、softAP 模式处于AP模式的ESP8266,此时就是一个服务端,也就是一个只能开热点,但是没有移动网的热点,一般这种模式用于近距离传输信息。原创 2022-10-27 18:03:09 · 3923 阅读 · 3 评论 -
STM32HAL库利用实现单击、双击、长按
要实现单片机的单击、双击、长按操作则需要理解一下他们的区别是什么可从图中观察到单击在一定周期里有一个低电平,双击则是两个低电平,本次进行的软件 STM32CubeMX + Keil5设计思路是这样的初始化一个全局标记按键中断事件发生后置位标记while死循环中一直检测这个标记,如果被置位那么进行消抖,然后再次检测连接KEY的IO是否处于按下状态,如是则认为本次按键有效第一次按键事件有效后,启动定时器定时300ms。原创 2022-10-23 17:54:43 · 4061 阅读 · 2 评论 -
STM32关于UART的接收方式
STM32的 UART 一般分为和。原创 2022-10-22 19:38:54 · 3493 阅读 · 0 评论 -
STM32定时器深入学习
STM32定时器分为高级定时器 TIM1和TIM8通用定时器 TIM2、TIM3、TIM4、TIM5基本定时器 TIM6、TIM7三种定时器都是16位的自动装载计数器组成,由一个可编程的预分频器驱动。原创 2022-10-22 19:02:29 · 1428 阅读 · 0 评论 -
裸机开发之驱动开发
在基础的驱动框架中,有一个加载和卸载函数,这个函数是安装或者卸载这个驱动的将会去处理的函数。当然,这些对应的函数则需要我们自己去按照格式进行操作,如open对应的led_open就是一个函数,看上面的例程就可以看到对应的操作。每个函数指针赋值为函数地址,就代表当应用程序调用对应的文件io函数时,驱动就执行函数指针赋值的对应函数,例如下面的LED驱动例程中的。,每个块都有自己的地址。驱动控制硬件,控制外设,其实就是控制地址,通过地址往寄存器写入、读出控制内核驱动是通过虚拟地址操作,则就需要用到另外的函数,原创 2022-10-21 17:53:44 · 1388 阅读 · 0 评论 -
STM32的低功耗模式
如果在一般情况下,STM32F103C8T6各种模式的功耗测试:单片机最小系统电路功耗√ 正常模式:10mA√睡眠模式:2mA√停机模式:20uA√ 待机模式:2uA。原创 2022-09-20 23:12:25 · 9480 阅读 · 5 评论 -
ARM的基础知识
指令集是arm体系结构(处理器结构设计)中最重要的一部分,对于32位处理器cpu,cpu获取到32位的内容,这32位的01代表什么作用,有什么意义,即32位不同的01序列,不同的值代表不同的机器指令(机器要执行什么),如果再arm体系架构中有指令集,在cpu内部知道每串01代表什么,cpu硬件能够完美解析并执行指令,如寻址、异常处理。,当产生异常,切换对应的工作模式,SPSR用于保存当前的CPSR的值,然后改变CPSR(修改工作状态),异常结束时,回到之前的工作模式,就把SPSR的值恢复到CPSR。原创 2022-09-19 23:08:27 · 1458 阅读 · 0 评论 -
STM32之USB从设备(虚拟通信)
这里就做好了USB这边的工作,下面要开始配置我们的主程序main.c程序 ,首先加入我们程序的头文件。因为我们做的是虚拟串口,所以我们只需要修改红色框框内的程序。由于USB虚拟串口的驱动程序比较复杂,需要占用更多的内存,把那两项的值改成0x1000,预留更大的空间给USB驱动程序。主机到设备的连接需要经过多个层和多个实体之间的交互作用,USB总线接口层提供了在USB数据线上数据的底层传输。下面是USB从机时钟的配置,根据手册我们需要将时钟源设置到外界的时钟上,且使USB 时钟为40MHZ。原创 2022-09-18 20:46:14 · 7983 阅读 · 5 评论 -
STM32CubeMX之SPI闪存芯片W25Q128
擦除方式分为16页一组(即一个扇区4kbytes),128页一组(即8个扇区32kbytes),256页一组(即16个扇区或1个块64kbytes),或整个芯片擦除。编程即写数据,由于Flash的特性,只能从1编程0,所以写数据之前Flash里面的数据不是0xFF就必须先擦除,然后才能写数据。我这里采用的是PB12、PB13、PB14、PB15做SPI的四脚控制,然后进行主程序的操修改。在main.c下面创一个自定义的uint8_t的自变量数组,数组是需要根据自己的需求来进行使用的。就这样可以进行操作了。原创 2022-09-18 17:25:37 · 3625 阅读 · 3 评论 -
STM32CubeMX之温湿度传感器DHT11
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。超小的体积、极低的功耗,使其成为该类应用甚至最为苛刻的应用场合的最佳选择。DHT11是一款有已校准数字信号输出的温湿度传感器。精度湿度+-5%RH, 温度+-2℃,量程湿度20-90%RH, 温度0~50℃,最远可测得20m以内得温湿度。当第一次做这些的时候,看见单总线协议自己如果不知道怎么写,就去网上查询,看别人怎么写的,在进行协议的修改。原创 2022-09-18 12:03:06 · 2108 阅读 · 3 评论 -
STM32CubeMX的RTC设置以及实现
在32单片机上,在芯片上有外接备用电池引脚,和外接的32.768KHZ的时钟引脚,因为芯片内部的晶振是4K,所以如果你想要精准的走时,那么就要使用外接的晶振。我们需要对初始化程序进行修改,因为每次从新上电,都会从新开始进行执行,所以我们要开启,上电之后内部进行时间的保存,并且继续进行走时。什么是RTC,RTC简单的来说就是设置好时间之后,RTC将进行1S的走时,这样就可以实现时间的计时。接下来进行程序的修改,我们这里需要完成的是超级终端可以对时间的修改,则要进行以下操作。最后就可以达到想要的效果了。原创 2022-09-18 11:32:48 · 4198 阅读 · 5 评论 -
STM32CubeMX关于ADC采集DMA传输
如果你想就直接使用ADC,则只需要添加以下的设置,就可以实现ADC数据的采集了,这里我们采用了模块化编程的思想,既用一个adc.c和adc.h文件来进行操作。,其信号的幅度,或频率,或相位随时间作连续变化,或在一段连续的时间间隔内,其代表信息的特征量可以在任意瞬间呈现为任意数值的信号。配置完后,还需要将DMA的初始化函数放到ADC初始化函数的前面,这样才可以实现ADC的用DMA进行传输信号。下一步将DMA里的参数修改为定义的数组,并将传输次数改为2,这样电第一次传输是adc1的,第二次就是adc2的。原创 2022-09-17 23:51:03 · 2255 阅读 · 2 评论 -
关于STM32CubeIDE使用printf串口打印
下面这种是STM32CubeMX和keil形式使用printf函数的形式。与上面配置一样,但只需要进行一个串口重写就可以了,其内容就是和上面一样的。第一步在图形画界面进行串口配置,我们这里打开串口1并设置为异步通信模式。找到图中黄色部分, 勾选上这两个,然后点击应用并关闭就可以了。配置好后,就保存起就会进入编程界面。这部分需要加在main函数上面那个位置,也就是在。在菜单栏的项目里进入属性里面。原创 2022-09-16 11:34:47 · 6225 阅读 · 2 评论 -
STM32CUBEIDE 1.5.1自动代码补全
下载后,将压缩包内的jar文件复制到STM32CubelDE安装目录下的plugins文件夹下即可,如果存在有该文件,则先删掉原文件。删掉之后在将jar文件复制过去即可。链接:https://pan.baidu.com/s/1nLayEGX9cPghQcgxiS2icg。第一步 :下载代码补全插件。第三部:重新启动IDE。原创 2022-09-10 12:03:00 · 551 阅读 · 0 评论 -
32单片机的几种输入输出理解
无法直接输出高电平,要在外部连接上拉电阻才行,输出的电压由上拉电阻连接的电源决定。即很多开漏模式引脚连接在一起,只有当所有引脚都输出1时,才能够被上拉电阻拉到高电平。引脚内部什么都不接,处于浮空模式下,电平状态是不确定的。在使用当中,除了要接收模拟量、ADC采集时,其他情况都是使用下面三种模式常用的时上拉输入模式。通过内部的上拉电阻将一个不确定的信号通过一个电阻拉到高电平。推挽输出---IO输出0-接GND,IO输出1 -接VCC,读输入值是未知的。简单来说就是给内部外设使用的开漏输出模式。......原创 2022-08-12 12:13:27 · 1636 阅读 · 1 评论 -
如何利用单片机的FLASH进行上次断电操作
每当我们的单片机断电之后就无法进行上次的操作,如何让单片机在单片机在断电之后继续进行单片机断电之前的操作呢?其实原理很简单,只需要将上次的操作存入单片机的FLASH 里面(起始地址是0x8000000),当上电之后,先将FLASH里面该段数据从新取出来继续操作即可。......原创 2022-08-12 19:56:01 · 462 阅读 · 0 评论 -
如何利用无源蜂鸣器制作音乐
而驱动无源蜂鸣器需要给他提供频率以及高低电平才能有效地进行音调的改变。下面就是一个示例,可以作为开音乐或者完成其他事项的提示音。根据数据表制作一个播放程序,如果到时需要多个不同声音可以多谢几个,或者将参数修改成多个音乐的模式切换。一段音乐的数据表,我们也可以根据自己喜欢,自己根据音乐做一个数据表,其音标在本文的最后位置。首先我们需要知道一个音调的发出是根据不同的高低频率来的,根据一个周期进行发声的。首先我们需要一个蜂鸣器驱动初始化程序,在蜂鸣器不工作时,尽量让。......原创 2022-08-12 20:39:22 · 1597 阅读 · 0 评论