STM32
文章平均质量分 74
无
梅山剑客
2023年6月毕业,7月入职的嵌软攻城狮
展开
-
内存泄漏导致Hard_Fault问题记录
如果不这样做,在重复分配而不释放的情况下,会导致内存使用不断增加,最终可能耗尽可用内存,导致内存泄漏或其他内存相关错误。在LwIP中,每当通过pbuf_alloc成功分配了一个pbuf后,就应该在这个pbuf不再需要时使用pbuf_free来释放它,以避免内存泄漏。在函数Ethernet_sendPack中,使用了pbuf_alloc来分配一个新的pbuf结构体,如果在主循环中重复调用这个函数,并且每次调用都成功分配了内存,但没有在发送数据后释放这些内存,这将会导致内存泄漏。实际是出现内存泄漏的问题。原创 2024-03-27 17:02:10 · 326 阅读 · 1 评论 -
STM32之串口传输结构体
传输数据还可以,上位机解析数据耽误了一个下午的时间特此来记录一下!这里将16位数据转成8位数据转发到上位机。原创 2022-08-10 21:27:57 · 2634 阅读 · 8 评论 -
正点原子STM32F407+AD7606+RT-Thread Studio 调试记录
介绍项目要求采集6路压力传感器1-5V数据。经过选型比较,选择AD7606 8通道采样器件,从淘宝买的采样模块。调试主控板是正点原子探索者STM32F407ZGT6,环境:RT-Thread Studio 。从初始化到跑通的整个过程。首先,控制器和AD7606采用的是软件模拟SPI通信,对软件SPI先进行初始化。SPI引脚初始化函数:bsp_InitSPIBus();分别对SPI的MOSI、MISO和SCLK引脚进行初始化。(因为是主机接收从机发送,因此MOSI引脚可以不接)void原创 2022-05-12 16:38:29 · 2932 阅读 · 6 评论 -
STM32的一种串口数据接受方式
项目要求控制12路电磁阀,电磁阀的控制帧格式尾 头帧0xFB ,数据位xxx,尾帧0xFB。在串口中断回调函数中做出如下的实现。uint8_t start_Flag=0;//数据开始标志位uint8_t cont=0;//数据计数位uint8_t RX_Buff[16];//数据缓存uint8_t flash_Fiag=0;//数据接受完成//串口中断回调函数void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){ if(hua原创 2022-04-21 20:56:15 · 2950 阅读 · 12 评论 -
DAC7512—软件模拟SPI实现与DAC7512通信
今天使用DAC751实现输出0-5V电压,效果良好精度很高。DAC7512时序图。需要注意的是要给出5V参考电压,实现DAC5V正常输出。根据时序图,在开启写入数据之前,片选信号拉高再拉低,然后时钟线和数据线同步写入16个数据,之后片选信号线拉高,完成16位数据写入。软件代码引脚配置初始化引脚配置为3个推挽输出即可。#define SOFT_CLK_1 HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_SET)#define SOFT_CLK_0 HA原创 2022-04-12 23:05:43 · 1577 阅读 · 1 评论 -
STM32CubMx+RT-Thread Studio实现多线程过程
本文主要介绍如何通过STM32CubMx+RT-Thread Studio实现嵌入式多线程运行的步骤。新建工程RT-Thread Studio工程打开RT-Thread Studio软件,新建工程。选择RT-Thread项目从芯片选型出发,配置芯片信息,这里我的板子是原子探索者F407ZGT6,根据自己的芯片型号配置具体信息。至此,RT-Thread Studio 软件配置任务完成,如下图所示。STM32CubMx工程在新建完成的RT-Thread Studio打开STM32CubMx软件原创 2022-04-10 21:17:42 · 8020 阅读 · 8 评论 -
MCP4725驱动原理及代码实现——IIC学习
一、MCP4725介绍MCP4725是一款12位的,能够输出1-5V指定电压的DAC芯片,通信方式是使用IIC通信。二、硬件电路图二、编程原理C0-C2配置工作模式:写为0 0代表快速模式。MCP4725设备地址包含4个固定位( 1100 =设备代码)和3个地址位( A2 , A1 , A0 )。A2位和A1位在制造过程中是硬接线的,A0位由A0引脚的逻辑状态决定。A0引脚可与VDD或VSS相连,也可由数字逻辑电平主动驱动。这里配置A2 , A1 , A0地址位为:0 0 0因此,得出原创 2022-04-07 16:55:15 · 9144 阅读 · 15 评论 -
DAC8551编程原理以及实现方式
因项目需要通过0-5V电压控制比例阀,后通过芯片选型,选取DAC8551作为电压输出芯片,输出线性电压控制比例比例阀。资料来源于:德州仪器TI—DAC8551数据手册DAC8551介绍DAC8551 是一款小型、低功耗、电压输出、16 位数模转换器 (DAC)。 它是单调的,提供良好的线性度。 DAC8551 使用一个通用的 3 线串行接口,该接口以高达 30 MHz 的时钟速率运行,并与标准 SPI、QSPI、Microwire和数字信号处理器 (DSP) 接口兼容。DAC8551 需要外部参考电原创 2022-03-31 15:52:54 · 2697 阅读 · 0 评论 -
链表在嵌入式中的应用(二)—基于GitHub开源项目之MultiButton
1、项目描述一个小巧简单易用的事件驱动型按键驱动模块,可无限量扩展按键,按键事件的回调异步处理方式可以简化程序结构,去除冗余的按键处理硬编码,让按键业务逻辑更清晰。GitHub源码地址如下:Github源码地址2、代码移植本文使用的开发板是正点原子探索者F407,首先使用STM32CubMx初始化外设信息,要求:1、初始化按键输入引脚PE2、PE3、PE4任意一个,2、串口打印功能。不熟悉的可以查阅之前的blog;按键串口初始化配置界面如下所示:移植代码工程,添加MultiButton原创 2022-03-18 07:56:37 · 828 阅读 · 0 评论 -
链表在嵌入式中的应用—基于GitHub开源项目MultiTimer
链表基础以及链表在嵌入式领域中的应用,描述的单向带头结点的链表实现,包括创建,删除,插入,头插法和尾插法原创 2022-03-17 01:30:00 · 963 阅读 · 0 评论 -
STM32之继电器驱动(上下拉电阻)
事情的经过:今天买了一个5V继电器,商家说可以用STM32驱动,所以准备用STM32引脚直接驱动,后来,上午试了2小时,引脚一直有电平变化(配置为推挽输出),但是继电器就是没有反应,直接接上5V的电源正负才会有反应,之后,询问了群友和上网查找,是控制器的引脚带负载能力不行,输出的电流太小,带不动这种大功率器件。这时,有网友建议我选择带上拉电阻的引脚,因此,探索者上的PB8,因为PB8外接了4.7K的上拉电阻,并且配置引脚为,开漏输出模式,后来经过尝试,成功驱动继电器。总结:之前网上看很多资料,对单片机引脚原创 2022-02-24 17:48:08 · 8657 阅读 · 8 评论 -
STM32CubMX自学笔记(十一)---DMA实验
STM32CubMX自学笔记(十一)—DMA实验DMA简介直接存储器访问(DMA)用于在外设与存储器之间以及存储器与存储器之间提供高速数据传输。可以无需任何CPU操作的情况下通过DMA快速移动数据。这样可以节省CPU的资源供其他操作使用。两个DMA控制器有16个数据流,每一个DMA控制器用于管理一个或者多个外设存储器访问请求。每个数据流总共可以多达8个通道,每个通道都有一个仲裁器,用于处理DMA请求间的优先级。总结:DMA就是CPU的助手,数据搬运工。下图可分为四个部分1、DMA请求2、通道选择原创 2021-11-18 13:40:34 · 920 阅读 · 0 评论 -
STM32CubMX自学笔记(十)---IIC通信实验
引脚少,硬件实现简单,可扩展性强,不需要外部收发设备,广泛用在多个集成电路通信。信号线SDA和时钟线SCL1、支持多设备的总线,多个设备共用的信号线。2、一条IIC只是用两条总线线路,一条双向串行数据线(SDA),一条串行时钟(SCL),数据线用来表示数据,时钟线用来数据收发同步。3、每个连接到总线的设备都有一个独立的地址,主机可以利用这个地址进行不同设备间的访问。4、总线通过上拉电阻接到电源。当IIC设备空闲的时候输出高阻态,当所有设备都空闲,都输出高阻态时,由上拉电阻拉成高电平。5、多个主机同原创 2021-11-11 20:13:53 · 6307 阅读 · 2 评论 -
嵌入式C语言常用知识点
导读C 语言是单片机开发中的必备基础知识。我们这里就列举部分STM32学习中会遇见的C 语言基础知识点1.位操作下面我们先讲解几种位操作符,然后讲解位操作使用技巧。C语言支持如下6中位操作:(图1:六种位操作)下面我们想着重讲解位操作在单片机开发中的一些实用技巧。1,在不改变其他位的值的状况下,对某几个位进行设值。这个场景在单片机开发中经常使用,方法就是先对需要设置的位用&操作符进行清零操作,然后用|操作符设值。比如我要改变GPIOA的状态,可以先对寄存器的值进行&清零操作:原创 2021-11-08 22:48:55 · 870 阅读 · 0 评论 -
STM32CubMX自学笔记(八)---SPI通信协议
STM32CubMX自学笔记(七)—SPI通信实验主要介绍原创 2021-11-03 14:30:38 · 872 阅读 · 0 评论 -
STM32CubMX自学笔记(七)—CAN通信实验
STM32CubMX自学笔记(七)—CAN通信实验主要介绍由于项目需求要用到CAN通信协议,因此学习一下CAN通信机理和方法。CAN 是 ISO 国际标准化的串行通信协议。在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个 LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向原创 2021-11-02 17:55:51 · 727 阅读 · 0 评论 -
STM32CubMX自学笔记(六)—RTC实时时钟实验
STM32CubMX自学笔记(六)—RTC实时时钟实验主要介绍RTC是STM32单片机的内置外设,配置RTC的时候不需要配置额外的引脚即可完成RTC的使用。由于RTC拥有掉电不丢失的功能,导致RTC的价值非常大,因此在这里介绍一下RTC的使用。只要添加一颗纽扣电池即可实时显示单片机的时间,即使是断点了也可以在下次上电的时候继续显示实时时间。可用性非常强。RTC 模块和时钟配置是在后备区域,即在系统复位或从待机模式唤醒后 RTC 的设置和时 间维持不变,只要后备区域供电正常,那么 RTC 将可以一直运行原创 2021-11-02 15:39:34 · 1154 阅读 · 1 评论 -
传感器的使用(一)-火焰传感器
火焰传感器的介绍1.工作电压:DC 3.3V-5V2.灵敏度可调(可调电位器)3.工作温度:-10℃—+50℃4.设有固定螺铨孔,方便安装5.探测角度 60 度左右,对火焰光谱特别灵敏6.输出形式数字开关量输出(0 和 1) 检测到火焰或光源引脚输出1,否则输出0本例程是使用的是普通的火焰传感器。当检测到火焰的时候,火焰传感器的IO口输出一个高电平,通过检测PF5口的电平判断是否检测到的火焰,检测到火焰之后,PF9亮,蜂鸣器响。硬件介绍探索者STM32F407+蜂鸣器+LED蜂鸣器。VC原创 2021-06-28 22:28:52 · 22853 阅读 · 12 评论 -
RT-Thread基础学习(四)-桌面迷你时钟
第一节-基于探索者创建工程开发板是探索者STM32F407,配置选择默认,直接基于开发板创建新工程。通过串口配置终端。打印界面如图所示:下载完毕之后,复位运行。可以看到开发板每隔0.5S闪烁一次。实验一配置完成,结束。方式2,按照例程配置,终端打印出Hello RT-Thread。之后按照例程继续配置。之后添加点灯代码。第二节- 获取温湿度传感器数据(I2C设备驱动+SHT3x软件包)之后添加DHT11D的包到工程中。运行结果如下测试成功之后,为DHT11创建一个线程。.原创 2021-06-24 11:16:49 · 606 阅读 · 0 评论 -
RT-Thread基础学习(三)-RT-Thread Nano入门笔记
课程来源: 哔哩哔哩RT-Thread官方。第0课RT-Thread Nano介绍-添加源码RT-Thread Nano是RT-Thread的裁剪版本。在文档中心下载源码之后,打开界面如图所示。板级支持包内容很简介,比RT-Thread少很多文件。components中包括的finish文件,依旧是通过串口输入的命令行的文件。libcpu是所支持的文件包括类型。其中cortex-m3又支持不同的编译器,其中包括IAR,KEIL,GCC。src文件夹是操作系统的内核源码。其中包括了操作系统的C原创 2021-06-23 17:34:57 · 5605 阅读 · 0 评论 -
RT-Thread基础学习(二)-RT-Thread Studio 快速上手
RT-Thread Studio 快速上手打开软件,映入眼帘的就是主界面,界面整洁,清晰。还有哔哩哔哩视频教程,易上手操作,哔哩哔哩链接。因为手上的开发板是正点原子的F4开发板,之前下载好了开发板支持包,所以直接创建的基于F407的项目文件。工程创建完毕之后,主界面如图所示,同样的,界面的文件夹布局和之前刚入门的布局介绍一致。下面的RTT工程师之前实验创建的,这次创建新的工程也一并打开了。下面进入主函数,主函数的while循环,首先LED0高电平,延时5000ms,之后LED0低电平,延时500原创 2021-06-18 15:09:56 · 1290 阅读 · 3 评论 -
RT-Thread基础学习(一)-认识RT-Thread
第一章 认知RT-Thread开发板:正点原子探索者STM32F407打开文件夹applications 打开时候就是main.c文件,也就是程序的主函数。相对应的就是应用程序。然后,打开了rt-thread文件,这里面就是整个操作系统文件,其中包含了许多组件,components 是各个组件的目录。include是内核的头文件,libcpu是芯片的移植文件夹,例程中给出的是cortex-m3内核。src对应的就是源文件了。内容如下所示。tools是命令构建工具的脚本文件,我的理解是在命令窗口输入原创 2021-06-18 14:42:58 · 2775 阅读 · 0 评论 -
RT-Thread学习笔记
第一节课-初识RT-Thread介绍工程代码结构。原创 2021-06-18 14:42:16 · 2084 阅读 · 2 评论 -
QT上位机学习(二)
六、写一个串口调试助手一、QT下的三驾马车1、QT下的串口编程2、QT下的网络编程3、QT下的操作GPIO1、仿写串口调试助手步骤1:做好UI界面接收框控件:Plian Text Edit属性选择:Combo Box发送框控件:Line Edit广告控件:GroupBox设置串口助手的接收框不能写入数据,在点击窗口的情况下,按下readOnly。设置串口助手的默认波特率,双击图标。currentIndex 选择2检测串口的代码。{ ui->setupUi(this)原创 2021-06-09 08:25:45 · 1430 阅读 · 0 评论 -
STM32CubMX自学笔记(五)---定时器
STM32CubMX自学笔记(五)---定时器前景回顾主要介绍工程配置前景回顾上一节主要介绍了在STM32CubMx中如何配置中断,并且如何使用其中的中断函数,首次提到了回调函数这个概念,这一小节,我们在此基础上实现通过定时器来实现。。。。。主要介绍我们知道时钟就是单片机的心脏,并且,使用单片机万万离不开时钟,可以说时钟是单片机内容的重中之重,之前配置文件时,我们都没有介绍时钟这一模块,在这里,将要花费大量篇幅介绍STM32中的时钟小节。关于时钟的基本概念请转至时钟超详细讲解。这里还是主要对STM3原创 2021-05-27 17:21:27 · 1155 阅读 · 0 评论 -
STM32CubMX自学笔记(四)---中断
STM32CubMX自学笔记(四)---中断前节回顾主要内容介绍工程配置系统代码编写系统分析程序验证结语前节回顾上节完成了串口中断实验,通过串口与单片机通信,实现了信息的传送,在其中使能的中断,不过仅仅使用到了一个通信端口,试想一下,如果程序中有多个通信端口同时触发会如何?那么就会导致程序的结构的混乱,因此,在本小节引入中断方式,有效的规避此类问题。通过一个示例来了解STM32中中断是如何工作的,详细中断内容参照中断详解。主要内容介绍本节是通过配置两个中断口,来基本了解中断的工作方式,初步对中断有一原创 2021-05-26 17:20:49 · 1193 阅读 · 2 评论 -
STM32CubMX自学笔记(三)---串口通信
STM32CubMX自学笔记(三)---串口通信前节回顾主要内容介绍工程配置系统设置与原理图对照系统代码编写使能接收中断函数配置回调函数另一种方式下载验证结语前节回顾上节主要介绍了按键控制LED灯的实现,这节在上一小节的基础上,学习如何通过STM32CubMx配置的USART与上位机通信。主要内容介绍做单片机最重要的一部分就是实现通信功能,具体内容可参考串口详解部分内容。这里主要讲述工程实现。串口通信方式分为两大类,第一类为同步通信方式(如IIC,SPI通信方式)第二类为异步通信方式(如本节介绍到的原创 2021-05-26 10:58:43 · 1577 阅读 · 0 评论 -
STM32CubMX自学笔记(二)按键&LED灯
STM32CubMX自学笔记(二)---按键&LED灯前景回顾系统工程创建前景回顾上节主要介绍了如何配置一个基础的工程以及如何翻转LED灯,本节内容是上节内容的延续,在LED灯的基础上,再添加按键部分。系统工程创建打开上节配置完毕的系统工程,我们查看原理图。找到按键挂在哪些引脚下面,这里我们用到的按键是KEY0,LEY1所以我们要在工程中使能2个GPIO,将PE3...原创 2021-05-25 09:40:18 · 1284 阅读 · 0 评论 -
STM32CubMx自学笔记(一)LED灯翻转
STM32CubMX自学笔记(一)-LED灯翻转工程创建系统具体配置三级目录功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入工程创建首先得安装STM32CubMx软件。具体安装步骤参照 链接.这里将不再赘述,第一节主要是介绍新工原创 2021-05-25 08:18:14 · 3971 阅读 · 1 评论