STM32开发
文章平均质量分 70
以原子的例程为基础摘下重要的资料与技术供后使用
自小吃多
太阳出来了黎明还远吗?
展开
-
STM32学习笔记:读写内部FLASH
ST提供的库函数基本能搞定由于 FLASH 存储器的内容在掉电后不会丢失,芯片重新上电复位后,内核可从内部 FLASH 中加载代码并运行,亦可当做EEROM来使用保存所需要的数据,以便下次启用读取数据注:STM32F103ZET6 的 FLASH 容量为 512K 字节,属于大容量产品STM32 的闪存模块由:主存储器、信息块和闪存存储器接口寄存器等 3 部分组成。☆主存储器,该部分用来存放代码和数据常数(如 const 类型的数据)☆系统存储区是用户不能访问的区域,它在芯片出厂时已经固化了启动原创 2022-08-31 14:22:56 · 2042 阅读 · 1 评论 -
STCubeMX软件介绍及使用方法
STCubeMX软件介绍及使用方法功能作用:配置和生成代码;编译和调试;评估功耗原创 2020-02-23 14:04:31 · 1286 阅读 · 0 评论 -
IAR软件安装
集成开发环境(IDE)囊括一下工具进而方便用户简单操作一下的各类编译器C compiler C 编辑器 将C文件编译成obj(对象文件)文件Assembler 汇编器 将汇编文件编译成obj(对象文件)文件Linker 链接器,将多个obj文件链接为一个可执行文件Flash programmer Flash编程器,将可执行文件下载到MCU的Flash内 (注意不同的开发环境编程出不同的后...原创 2020-02-05 22:19:46 · 630 阅读 · 0 评论 -
STM32 HAL库 STM32CubeMX -- IWDG(独立看门狗)
看门狗(Watchdog)就是MCU上的一种特殊的定时器,用于监视系统的运行,在发生错误(例如程序出现死循环)时,能触发一个中断或产生系统复位,防止程序跑飞。STM32 有两个看门狗,一个是独立看门狗另外一个是窗口看门狗,独立看门狗号称宠物狗,窗口看门狗号称警犬。原创 2024-02-16 08:41:19 · 1798 阅读 · 0 评论 -
typedef struct在C语言中含义
在上面的示例中,我们使用 typedef struct 将结构体类型 Point 定义为一个包含两个整数成员 x 和 y 的结构体类型。通过将它们结合在一起,我们可以创建一个新的类型名称,该名称与原始结构体类型具有相同的成员和功能。它的作用是为一个结构体类型定义一个新的名称,以便在代码中使用更加简洁和清晰。大括号后面的Point是struct Point这个结构体类型的别名,这个可以自己起名的,不过在这里比较特殊,别名和结构体的名字一致了,可以是任意的名字;另外一种写法更加简洁。原创 2024-02-07 19:47:09 · 252 阅读 · 0 评论 -
CANopen协议栈专题知识点干货分享,系统了解NMT,PDOSDO,时间戳,同步报文,紧急报文等-笔记
大家不用管它,主要就是管这个,他就异步的,就是说这个从极端是主动往上发的,人家就通过内部事件,比方说timer driver有驱动定时触发那个事件,就是周期性的就可以给这个主阶段发送消息,就这么一点,这个是异步的。初始化状态下只有启动这个上线豹纹,然后预操作状态下,注意预操作状态下它不可以操作PDO,然后操作状态下都是各种能量都可以操作,其实我们没有这个上限,这个东西,上线报的那个东西,然后停止状态下特别注意一点,停止状态它是有这个心跳,有这个心跳包的,各位注意这一点。好,这是它这几个东西。原创 2024-02-07 19:44:49 · 890 阅读 · 0 评论 -
STM32系列(HAL库)——内部FLASH读写实验(含结构体的保存)
(1)STM32根据闪存(Flash)容量的大小,将Flash分为每页1K字节 或 每页2K字节。ROM为常说的硬盘,比如手机的64G和128G等,可以简单的理解为硬盘的存储空间,特点是掉电数据不丢失,所以又叫“非易失性存储器件”。RAM为常说的内存,比如手机的2G内存4G内存等,就是程序跑起来的时候所占用的存储空间,特点是掉电数据丢失。(4)Flash的写操作,需要擦除一整页后再重新写入,不能对特定处进行修改,写的时候可以分多次写入。1、确定要写入Flash的首地址(稍后介绍确定地址的方法)原创 2024-02-08 09:00:00 · 2386 阅读 · 3 评论 -
Modbus 主从协议栈基础-笔记
Modbus 主从协议栈基础-笔记原创 2024-02-06 19:11:15 · 110 阅读 · 0 评论 -
#ifndef、#define、#endif三个语句联合使用 是干嘛用的
当头文件被多次包含时,#ifndef和#define指令会检查是否已经定义了HEADER_H宏,如果没有定义,则执行#define指令定义宏,并包含头文件的内容。其实这段代码是C/C++中的条件编译指令,用于防止头文件的重复包含。这种写法的好处是,当多个源文件需要使用同一个头文件时,可以避免重复包含导致的编译错误,并且可以确保头文件的内容只被包含一次,提高了代码的执行效率。#ifndef HEADER_H 和 #endif 之间的代码块是头文件的具体实现部分,可以包含函数声明、变量定义、结构体定义等。原创 2024-02-06 14:17:05 · 221 阅读 · 0 评论 -
MAX31865硬件和程序攻坚
代码部分直接复制就能使用。通常三根线中选取两根不同颜色的就是闭环的一个电阻,在25°下能测量出他的电阻值为110欧左右,另一根是他的补偿线。该芯片提供了电阻与温度的表格,但是是以10步进为单位的。MAX31865小模块连接PT100传感器需要将模块的一处用刀具隔开,因为哪里是有很细小的走线。对于查表法快速定位该值通常使用的算法是二分法,具体怎么写可以通过AI生成代码。还有就是不知道如何将PT100传感器连接到MAX31865小模块上去的。这篇文章的工程的话,里面贴心提示有对应的MCU与小模块之间的连接。原创 2023-12-16 23:38:27 · 1789 阅读 · 10 评论 -
使用下载代替物理串口输出-STM32 Debug (printf) Viewer
进入Debug选项,选择Settings,进入Trace,设置Core Clock为72MHz,勾选Trace Enable,将ITM Stimulus Ports设置为0x00000001和0x00000000。STM32的PB9、PB10引脚的串口1通常用作其他功能使用后,无法通过printf()函数打印输出想要调试输出查看变量或调试信息。本人使用的是STM32F1,demo使用hal库,下载器使用官方的ST-ling。将STDOUT,STDIN,STDERR勾选,并设置为ITM。原创 2023-12-16 19:18:03 · 250 阅读 · 0 评论 -
STM32H库Modbus-RTU程序
Modbus通讯协议最早由Modicon公司开发,是一种采用主从通信模式,即只有主机可以发起请求,从站设备通过向主机提供请求的数据或执行查询中请求的操作作为响应,广泛应用于工业现场的总线协议。主从查询——响应机制如下图所示。主机可以通过指定节点地址的方式访问从设备,也可以通过发送广播消息访问所有从设备;从设备只响应针对自己的查询,不会响应广播查询。Modbus通信协议是一项应用层报文传输协议,包括RTU、ASCII和TCP,标准的Modbus协议物理层接口包括RS232、RS485和以太网。原创 2023-12-16 18:46:46 · 691 阅读 · 0 评论 -
浮点数float类型不能用“==” 否知if语句不起作用
在许多编程语言中,包括Python,浮点数类型(float)的比较是有问题的。浮点数是近似表示的,因此在比较两个浮点数是否相等时可能会遇到精度问题。比如,如果你使用if (x == 0)来判断浮点数变量x是否等于零,很可能会失效。这是因为浮点数的存储方式和计算方法可能会导致非常小的舍入误差,使得看起来相等的两个浮点数在比较时被认为是不相等的。为了解决这个问题,可以使用一个很小的容差(tolerance)值来比较浮点数。原创 2023-12-16 17:47:41 · 213 阅读 · 0 评论 -
STlink下载程序不能复位的说明
ST-LINKIII-KEIL_SWO.dll 放到C:\Keil_v5\ARM\STLink(自己安装KEIL路径)替换掉原来的,或者原来的改名备用。STLINK在MDK5.28或其他版本中下载程序后不能复位,需要手动按复位键,MCU 才正常运行。经过以上操作后,MUC下载程序后还是无法进行正常复位,需要替换动态库试试。首先判断是不是该MDK版本的问题,按照以下进行。如果还是不行,取消Enable勾选,就可以了。点击Debug,Settings。勾选Reset and Run。原创 2023-12-03 09:47:33 · 335 阅读 · 0 评论 -
STM32GPIO速度配置究竟改变了什么-笔记
一般有 Low、Medium、High,三种速度选择。速度配置变了硬件什么状态?对 GPIO 的输入输出信号有什么影响?编程时如何选取速度参数?或者最直接的 你以为 GPIO口的刷新频率那么就错了,实际上情况如下解释含义是什么,是书面意思的速度吗?它是像有些人理解的那样是带宽吗?当信号的上升时间加下降时间小于2/3个周期并且占空比为50%左右时为最大频率上升时间和下降时间是由负载决定的,频率提高时,周期 T 逐渐缩短而 Tr 和 Tf 保持不变。原创 2023-12-02 21:46:38 · 613 阅读 · 0 评论 -
以STM32CubeMX创建DSP库工程方法一
它们中的文件功能如下:1)BasicMathFunctions 基本数学函数:提供浮点数的各种基本运算函数,如向量加减乘除等运算。2)CommonTables 数字信号处理常用参数表。3)ComplexMathFunctions 复数计算数学函数。4)ControllerFunctions 控制算法函数。包括正弦余弦,PID电机控制,矢量Clarke变换,矢量Clarke逆变换等。5)FastMathFunctions 常见快速算法的数学函数。原创 2023-11-30 22:14:02 · 355 阅读 · 0 评论 -
INA219电流感应芯片_程序代码
详细 是以借鉴 https://blog.csdn.net/jgagdwp/article/details/79470158 此处的总结进行有关使用INA219电流感应芯片的设置:1、启动:可以上电启动或者通过 I2C 启动。 2、ADC 功能:①可以对分流电阻两端的电压进行 ADC②可以对 Vin-进行 ADC③可以对采样位数,采样时间,采样方式进行设置3、PGA 功能:①可以设置感应分流电压的范围(±40mv, ±80mv, ±160mv, ± 320mv);②可以设置感应 bus 电压范围原创 2023-11-30 19:31:19 · 1332 阅读 · 6 评论 -
寄存器位_置0或置1操作
寄存器位_置0或置1操作原创 2023-11-29 15:32:22 · 782 阅读 · 0 评论 -
STM32-SPI1控制AD7705(Sigma-Delta-ADC芯片)
TM7705 是双通道全差分模拟输入,带有一个差分基准输入。当电源电压为 5V、基准电压为 2.5V 时,该器件都可将输入信号范围从 0~+20mV 到 0~+2.5V 的信号进行处理。还可处理±20mV~±2.5V 的双极性输入信号,对于 TM7705 是以 AIN(-)输入端为参考点。选定的输入信号被送到一个基于模拟调制器的增益可编程专用前端。通过片内控制寄存器可调节滤波器的截止点和输出更新速率,从而对数字滤波器的第一个陷波进行编程。AD7705与国产TM7705型号差不多,也就是可以参考国产的手册。原创 2023-11-25 11:00:14 · 1307 阅读 · 4 评论 -
STM32CubeMX学习笔记-CAN接口使用
CAN总线网络的结构有闭环和开环两种形式闭环结构的CAN总线网络,总线两端各连接一个1202的电阻。这种CAN总线网络由ISO11898标准定义,是高速、短距离的CAN网络,通信速率为125kbit/s到1Mbit/s。在1Mbit/s通信速率时,总线最长40m。开环结构的CAN总线网络,两根信号线独立,各自串联一个2.2k·的电阻这种CAN总线网路由ISO11519-2标准定义,是低速、远距离的CAN网络,通信速率最高125kbit/s。在40kbit/s速率时,总线最长距离可达1000m。原创 2023-11-20 07:10:05 · 1676 阅读 · 0 评论 -
简单线性回归函数
线性回归:利用线性回归方程中最小平方函数对一个或多个自变量和因变量之间关系进行建模的一个回归分析。该建模的目标为找到各个系数的最佳值让预测误差最小简单线性回归:只有一个自变量的线性回归公式:多元线性回归:大于一个自变量的线性回归。原创 2023-11-18 08:31:14 · 149 阅读 · 0 评论 -
typedef __packed struct 中的__packed意义
typedef __packed struct 是C语言中用于定义紧凑结构体的语法。__packed关键字用于告诉编译器不要为结构体成员添加填充字节,从而使得结构体的大小更加紧凑。typedef关键字用于为数据类型定义一个新的名称。则在c后面会有7个字节的填充字节,在e后面也一样。结构体共占用24个字节。此处假设char占用1个字节,double占用8个。则该结构体将只占用10个字节。原创 2023-10-25 11:47:07 · 643 阅读 · 0 评论 -
单片机ADC常见的几种滤波方法
如今传感器的种类越来越多,数量也越来越多,而这些传感器很多都会用到模拟量,模拟量就离不开ADC。然而,我们单片机ADC采集的模拟量基本都会经过“滤波”处理才能使用,下面给大家分享一些常见的ADC滤波算法。原创 2022-11-29 19:50:32 · 691 阅读 · 0 评论 -
ST-link/V2引脚定义和更新固件说明
用了一段正版的下载器发现还不如用盗版的,我遇到了芯片检测不出来,还有就是下载固件时,老是提示要我升级器固件,注意升级有提示需要重插拔USB。STM32的JTAG / SWD接口是通过20PIN连接线连接目标板,所以ST-LINK/V2连接至STM32目标板时需要注意连接方向。这里集成的升级工具是基于Windows平台,所以,电机Update之后,和上面Windows平台操作方式一样。同样,这里的固件也可能不是最新的版本的。C.ST-Link可以自由升级不影响,如果山寨J-Link升级就需要谨慎。原创 2022-11-27 09:36:39 · 2749 阅读 · 0 评论 -
STM32HAL库单ADC+DMA学习及测试记录
(13)ADC_Regular_ConversionMode->Rank->Channel,选择ADC的通道,在前面则通道后,处选择对应的Channel即可,如果只用到3个通道,会衍生出三个Rank选项。(6)ADC_Settings->Continuous Conversion Mode:连续转换,默认“Disable”,不使能,如果多通道或连续采集信号时可使能,此处需要使能“Enabled”;步骤5:下拉选择“MDK-ARM”,表示用的IDE是keil;后面的“V5.27”则是软件的版本号;原创 2022-11-27 08:57:07 · 3217 阅读 · 2 评论 -
STM32-NUCLEO-F411RE-USART_串口
STM32-NUCLEO-F411RE-USART_串口原创 2022-09-12 22:35:07 · 2090 阅读 · 2 评论 -
STM32-NUCLEO-F411RE—捕获PWM信号测出占空比和频率
这里以TIM_CH1为例,当从CH1输入一个PWM波,通过输入滤波后将会产生两路信号:tim_ti1fp1 & tim_ti1fp2,分别送至tim_ic1 & tim_ic2,也就是说一个TI信号将会被映射成两路的IC信号,所以可以通过进行边沿检测来测量PWM的频率以及占空比。是 HAL 库的定时器总中断,里面代码很多,这里不展示,我们只需要知道一点——当 TIM2 计数值溢出或发生其他事件(如捕获到上升/下降沿信号)时,系统会执行一系列的中断回调函数,其中包括我们将要用到的 计数溢出回调函数。原创 2022-09-09 15:18:28 · 1109 阅读 · 0 评论 -
EXC_RETURN
根据Cortex-M3的异常处理流程,当发生异常时,CPU先将核心寄存器压入当前堆栈(如果当前是线程模式,则压入PSP堆栈,如果当前是Handler模式,则压入MSP堆栈),然后CPU会将LR设置为一个特殊的值,比如0xFFFFFFFD,然后切换到Handler模式,切换成MSP堆栈,最后进入异常处理例程(异常处理例程总是使用MSP堆栈)。0xFFFFFFFD 表示中断返回时从PSP堆栈恢复寄存器值,中断返回后进入线程模式,使用PSP堆栈(这是常见的,OS处理完中断后返回用户程序)。转载 2022-09-08 11:47:22 · 615 阅读 · 0 评论 -
STM32-NUCLEO-F411RE—输出PWM及修改PWM频率与占空比
若TIM1_CNT>= TIM1_CCRx,OCxRER为低。在上面配置TIM1参数,预分频系数设置为96-1, 自动重载值设置为1000-1,那么PWM频率为96,000,000/((96-1+1)*(1000-1+1))=1000Hz,即1KHz。初始设置为PSC为96-1,ARR为1000-1,若设置为500-1,那么他的频率应该是96M/(96-1+1)(500-1+1)=2k。查看下列文档可以得知,定时器主要有TIMx_CNT、TIMx_PSC、TIMx_ARR、TIMx_RCR控制。原创 2022-09-05 23:02:45 · 2075 阅读 · 0 评论 -
“高通”字库芯片的使用方法
“高通”字库芯片的使用方法原创 2022-09-01 11:40:08 · 2257 阅读 · 0 评论 -
L6470步进电机驱动芯片
关于L6470步进电机驱动芯片L6470芯片自带驱动引擎,支持128微步的电机驱动器,SPI接口ST官方搜索L6470关键字即可搜到相应的驱动代码例程,本次实验是以SMT32F103ZE的开发板来移植,在七星虫6-(德飞莱)尼莫M3S-串口1收发例程中开展下去。该套例程中关键的工程文件名称为“dspin.c”和“dspin.h”该代码是本文的核心讲解处,我以翻译好的文件方式整理相关代码,先粘.........原创 2022-08-31 18:01:10 · 2012 阅读 · 4 评论 -
ADC_内部电路Rsh和Csh和转换速率Tconv以及频率fs
该图为GD32芯片内部的ADC结构该图为GD32芯片特征参数主要关注以下参数fs(Sampling rate)=采样率fADCCONV( ADC conversion time)=ADC转换时间RADC( Input sampling switch resistance)=输入采样开关电阻CADC( Input sampling capacitance)=输入采样电容......原创 2022-08-31 14:43:49 · 951 阅读 · 0 评论 -
STM32笔记--通过DMA传递给DAC12位右对齐双寄存器
STM32笔记–通过DMA传递给DAC12位右对齐双寄存器遇到的问题:(1)为什么DMA的数据不递增的情况下输出固定(参数一次循环16次),而在数据递增的模式下(参数一次循环一次递给多个值)(2)为什么传递过来的数值与PA14和PA15绑定在一起变更DAC触发方式:以上选择8个触发事件之一触发DAC转换,但支持DMA请求的有7种(除软件触发以外)。DAC模块方图方图中主要是围绕数字至模拟转换器x展开。在使用 DAC 时,不能直接对上述 DORx 寄存器写入数据,任何输出到 DAC 通道 x原创 2022-08-31 14:30:29 · 1233 阅读 · 0 评论 -
STM32接口FSMC与FMC控制 XXROM
FMC是STM32F429/439专有的,而FSMC存在于F1和F4中我们常用的芯片中。他们的全称为:Flexible static memory controller (FSMC)柔性静态存储器控制器Flexible memory controller (FMC)灵活的存储控制器先以FMC具体介绍:有地址引脚和数据引脚还有控制引脚从图中可以看出STM32内部总线是...原创 2022-08-24 22:48:16 · 2178 阅读 · 0 评论 -
STM32C8T6 PC13、PC14、PC15、特殊引脚更改为普通引脚
STM32C8T6 特殊引脚更改为普通引脚最近做一个项目,调试的时候,发现PA15引脚无论配置输出高还是低或者输入,均只能输出3.3V的高电平。前提说明,目前STM的硬件调试有两种方法,JTAG和SW的方式,目前个人认为最好的方式就是SW,因为它只占用PA13和PA14两个io。而JTAG还要多占用PB3,PB4,PA15三个io口。很浪费资源。本人使用SW的方式,但是STM默认会启用SW和JTAG两种。也就是说,默认情况下,PA13、PA14、PB3、PB4、PA15均不能作为普通io使用。因为本原创 2022-08-19 21:44:38 · 3853 阅读 · 0 评论 -
STM32标准库频率占空比测试工具
定时器1、2、5、8捕获占空比频率值原创 2022-08-14 16:19:24 · 346 阅读 · 0 评论 -
Stm32管脚控制共阳数码管LED数码管
Stm32管脚控制共阳数码管LED数码管。程序用定时器定时扫描出每一位的数码管。原创 2022-08-12 10:17:43 · 2404 阅读 · 0 评论