![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
stm32
文章平均质量分 55
离凌寒
这个作者很懒,什么都没留下…
展开
-
一、关于串口以队列方式接收数据应用笔记。
对串口以队列方式进行接收数据时的使用分析笔记原创 2023-03-01 11:44:43 · 485 阅读 · 1 评论 -
一、SPI通信时前面几个字节为0x00,后面正常的问题总结
spi通信的前几个字节为0x00的问题。原创 2022-12-14 17:39:09 · 1990 阅读 · 2 评论 -
一、关于回调函数在实例中的应用分析
关于回调函数的应用分析和演示。原创 2022-11-03 11:54:55 · 415 阅读 · 0 评论 -
一、串口SHELL模式配置分析解读
对原子的串口shell处理方式进行重新整理,解析原创 2022-09-05 22:57:28 · 616 阅读 · 0 评论 -
一、使用串口处理机制中对于FIFO的处理机制应用的解读
一、FIFO是First Input First Output的缩写,先入先出队列。使用的场景:一般是在不同的时钟域之间的数据传输(简单理解即:一个(读\写)快,另外的一个(读\写)慢的场景中。)本质操作:就是将收的数据存储的一个线性的数组中,通过指针指向该数组的自加1(偏移)来遍历数据,达到读取或者写入的目的。作用:起到缓冲环节,可防止数据的丢失。对数据量大的进行存储,避免频繁的总线操作。并且可满足dma的操作。在fifo中需要理解连个重要成员:宽度:指一次写读操作的数据位数。深度:存储多少原创 2022-05-07 15:01:15 · 2161 阅读 · 2 评论 -
一、对ST的系统时钟的理解与笔记
一、对于系统的启动和初始化流程1.启动流程系统启动文件startup_xx.s进行系统并调用复位中断复位服务程序。在复位中断服务程序里调用SystemInit函数,此函数在文件system_stm32f4xx.c里面之后调用编译器封装好的函数__main ,进入到main中执行用户的函数2.初始化流程在main函数中的重要初始化HAL_Init函数即HAL库初始化函数,在stm32f4xx_hal.c中进行配置。在system_stm32f4xx.c中有关于HSE_VALUE的配置,当时钟不匹配时原创 2022-04-28 15:50:32 · 913 阅读 · 0 评论 -
一、对MODEBUS RTU方式通信学习笔记
一、首先1、对于寄存器操作的一些宏进行理解。#define SET_BIT(REG, BIT) ((REG) |= (BIT))//设置寄存器的第bit位值为1,SET_BIT(RCC->AHB2ENR,1) 或者 SET_BIT(RCC->AHB2ENR,2) #define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT))//清除寄存器的第bit位值为1的值,即将第bit位置0,CLEAR_BIT(RCC->CR, 64) #def原创 2022-04-27 20:24:27 · 2428 阅读 · 0 评论 -
一、cubeide的使用与笔记
一,应用使用**1.**使用CubeIde 时生成hex或者bin,进行下载配置工程右键》Properties》C/C++ Build 》Settings 》找到Build Steps选项卡,在“Post-build steps”的“Command”输入以下命令生成hex:arm-none-eabi-objcopy "${ProjName}.elf" -O ihex "${ProjName}.hex"生成bin:arm-none-eabi-objcopy "${ProjName}.elf"原创 2022-04-26 14:42:50 · 2166 阅读 · 0 评论 -
一.关于ymodem协议的配置总结
一.对ymodem协议的基础通信结构解读:(1)Ymodem 有两种帧格式,主要区别是信息块长度不一样。(2)帧头表示两种数据帧长度,主要是信息块长度不同。(3)数据包序号只有1字节,因此计算范围是0~255;对于数据包大于255的,序号归零重复计算。(4)【1】以SOH(0x01)开始的数据包,信息块是128字节,该类型帧总长度为133字节。【2】以STX(0x02)开始的数据包,信息块是1024字节,该类型帧总长度为1029字节。(5)Ymodem采用的是CRC16校验算法,校验值为2字原创 2021-12-17 14:39:12 · 3769 阅读 · 0 评论 -
一.对于串口的打印重定义和打印功能函数定义
一.串口1的打印重定义。#pragma import(__use_no_semihosting) //标准库需要的支持函数 struct __FILE { int handle; }; FILE __stdout; //定义_sys_exit()以避免使用半主机模式 void _sys_exit(int x) { x = x; } //重定义fputc函数 int fputc(int ch, FILE原创 2021-12-16 08:58:31 · 1054 阅读 · 0 评论 -
一.stm32的内部flash操作笔记
一.在文件stm32f4xx_hal_flash_ex.h中有对应的文件标号定义如下:/*--------------------------------------- STM32F40xxx/STM32F41xxx -------------------------------------*/ #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) || defin原创 2021-12-13 16:25:14 · 754 阅读 · 0 评论 -
一.独立看门狗的理解笔记
一.独立看门:(1)首先独立看门狗和窗口看门狗的两者异同点分析:1>·窗口看门狗是需要精确的us的一种系统复位机制,同时还有中断配合分析。应用在程序运行超时要求较高的场所。加粗样式2>·独立看门狗则是以精确到ms或者s的一种复位机制触发的复位。简单分析:窗口看门狗更加的安全可靠,独立则只能满足需要复位的功能。(2)独立看门狗参数配置依据:分频系数有如下几个选项:独立看门狗的计数器是一个 12 位的递减计数器,最大值为 0XFFF,当计数器减到 0 时,会产生一个复位信号:原创 2021-12-12 23:20:54 · 844 阅读 · 0 评论 -
一.窗口看门狗串口记录笔记
一窗口看门狗的原理:简单来讲:就是有个递减计数器:从(0x7f)127开始递减——>64(0x40).并有一个窗口值来划分:递减到喂狗的有效区域。(值:0x7f~0x40)其中FPCK1:程序:/* WWDG 配置函数 * tr :递减计时器的值, 取值范围为:(127)0x7f~0x40(64),超出范围会直接复位 * wr :窗口值,取值范围为:0x7f~0x40 * prv:预分频器值,取值可以是 * @arg WWDG_PRESCALER_1: WWDG count原创 2021-12-07 17:58:21 · 445 阅读 · 0 评论 -
一.对于flash芯片的存储区的总结
一.对于flash的存储的区分:1.假设芯片的flash大小为 1mb,则块区:16块 即64kb为一块区扇区:256个扇区 即4kb为一扇区页: 一个扇区有16页,即256byte为一页名称值块区一个1mb大小的flash有16个块扇区一个块区有16个扇区页一个扇区有16页2.依此类推,可知任意大小的flash存储的区域大小。(此为外部存储flash芯片的划分原则)。对于mcu内部flash芯片的存储的划分,由其芯片说明手册中由介绍。一般也遵循上原创 2021-11-11 09:19:23 · 5849 阅读 · 0 评论 -
一.上位机和串口间的数据交互处理流程。
1.头文件的中的使用的变量定义://***********************************串口相关***********************************************//enum uart_statu_type{ UART_POWER_UP,//上电状态 UART_STANDBY, //初始化串口状态 UART_RUNNING, //初始化完成后的正常状态 UART_RECEIVING,//正在接收的状态 UART原创 2021-11-09 14:21:52 · 952 阅读 · 0 评论 -
一.对ST官方所提供stm32实例资料说明。
一.首先ST官方提供了示例资料https://www.st.com/zh/ecosystems/stm32cube.html#products下载连接。二.对cube压缩包解压:以f4的cube包进行介绍:1.2.3.4.对于手动初始化外设,可以通过文件内的文件进行参考配置,如不熟悉cubemx图形化编程配置的,可以以此为参考进行手动的文件配置。...原创 2021-10-12 18:28:15 · 227 阅读 · 0 评论 -
keil5环境下生成bin文件
1.首先对于keil5其编译生成的HEX文件,一般通过勾选如下:在进行ISP烧写时,就可以通过传送HEX文件进行烧写。2.对于烧写而言不仅仅可以通过HEX文件进行烧写,还可以通过BIN文件进行烧写,且BIN文件比HEX文件更小。设置BIN文件如下:有两种方式,都是通过自带的fromelf.exe来生成(1)绝对路径方式绝对路径方式:“(keil5的安装路径下)\ARM\ARMCC\bin\fromelf.exe” --bin -o ./obj/test_app.bin ./obj/tes原创 2021-09-02 16:58:56 · 4849 阅读 · 3 评论 -
一.stm32上ADC,DAC的应用说明
一.stm32上ADC,DAC的应用说明:1.首先ADC是将模拟信号转成数字信号,DAC则相反。(模拟信号可以简单的理解为温度,光照,压力等,数字信号则可以是电压等),2.一般某些传感器上会标出AO,DO,AI,DI。其中AO叫做模拟量输出,DO数字信号输出。AI,DI则对应着输入。(未知)AO–>转化–>DI(对应的数字信号)。进一步解读:可以看成AO是模拟信号采集以后输出给数字信号DI接收后经过数据处理就得到了对应的电压数值,而这些电压数字一般和模拟量之间存在这一些数学转换公式,原创 2021-04-13 14:25:57 · 2124 阅读 · 0 评论 -
一.对于stm32内部flash读写解读:
对于stm32内部flash读写解读:1.stm32其内部本身有一块flash其扇区分布:其中主存储去为数据存储区别:剩下的扇区则是flash内部一般不去改变的区域。而对于内部flash的读写操作主要围绕主存储区展开。以stm32f4为例,对于不同的芯片其大小是有区别的,但起始扇区却是固定的0x800 0000;//为此可以在 xx_flash头文件中添加扇区起始地址的宏定义#define ADDR_FLASH_SECTOR_0 ((uint32_t)0x08000000) /* B原创 2021-04-08 15:13:09 · 1431 阅读 · 0 评论 -
一.对stm32 上硬件iic的解读和分析
一.硬件iic的初始化解读。1.stm32上硬件iic一般有三个,与模拟iic区别在于引脚固定。2.硬件iic是属于外设的,和串口一个性质。3.既然是外设,就有其对应的固件库。typedef struct{ uint32_t I2C_ClockSpeed; /*时钟频率。该参数必须设置为小于400kHz的值 */ uint16_t I2C_Mode; /*!< I2C模式。取值为@ref I2C_mode */ uint16_t I2C_DutyCycle;/*!&原创 2021-03-12 09:04:33 · 2996 阅读 · 1 评论 -
一.对HAL库片外flash操作解读
一.配置说明设置为主模式,理解上(mcu对flash)的操作,mcu相当于主,flash相当于从设备。下面的选项顾名思义,就是对spi主从设备的选项模式。关于时钟极性和相位的设置(两者解决着对数据的接收方式)。根据时钟极性(CPOL)及相位(CPHA)不同,SPI有四种工作模式。时钟极性(CPOL)定义了时钟空闲状态电平:CPOL=0为时钟空闲时为低电平CPOL=1为时钟空闲时为高电平时钟相位(CPHA)定义数据的采集时间。CPHA=0:在时钟的第一个跳变沿(上升沿或下降沿)进行数据采原创 2021-01-22 09:48:48 · 1716 阅读 · 0 评论 -
HAL库定时器应用
1.配置中断Tckl为84mHz,arr=5000,psc=8400, Tout=5000*8400/84(mhz)=500ms;y=有的人用计算器计算的500.000,是由于单位缘故。通过对溢出时间进行调节,可以实现过(溢出时间秒)的中断。2.代码补充在tim初始化中添加 HAL_TIM_Base_Start_IT(&htim4);//开启定时器中断/*在void TIM4_IRQHandler(void)下的HAL_TIM_IRQHandler(&htim4);下的原创 2021-01-20 16:27:10 · 2530 阅读 · 0 评论 -
一.在HAL库中使用串口(dma)模式接收发送测试
【代码】一.在HAL库中使用串口(dma)模式接收发送测试。原创 2021-01-20 14:59:01 · 3893 阅读 · 5 评论 -
stm32上实现3色led灯的(呼吸灯模式)以及对激光模块和金属触摸模块的应用解读
一.首先对于这三个模块来讲,都是属于对io引脚的应用的范畴。二.关于接线问题:1).三色led灯的接线(选择有tim定时器的引脚)r, g, b分别接选定的具有定时器的引脚,-号接地.2).激光模块的接线s, 接io引脚,-,号接地,中间的接3.3~5v电源引脚**3)**金属触摸模块接线do 接io引脚(此处接的时你要定义的引脚),+和g 分别接电源和地三.文件说明1头文件#ifndef _pwm_H#define _pwm_H//三色led灯头文件#include "sy原创 2020-11-26 18:03:06 · 3988 阅读 · 0 评论 -
对于stm32仿真器下载程序事常见的问题(No Target Connected 错误和SWD/JTAG Communication Failure错误)解决方案。
一.对于stm32仿真器下载程序事常见的问题(No Target Connected 错误和SWD/JTAG Communication Failure错误)解决方案。(1) 出现这种问题的本质是由于stm32上的SWCLK和SWDIO没有开启。(或是自己无意识的动了PA13和PA4一般这两个脚是决定swclk和swdio的复用的,建议在看清楚引脚的一些复用功能后再使用),------导致仿真器无法读取到stm32的芯片,这就是报错的原因,虽然mdk能识别仿真器却无法下载程序。如图示问题:(2原创 2020-11-25 23:13:25 · 8357 阅读 · 2 评论 -
stm32上对(DTH11)温湿度模块的应用解读
stm32上对(DTH11)温湿度模块的应用解读一.DTH11电路介绍DHT11(温湿度模块)是单总线的连接,数据的输入输出由一根线完成,碰到NC脚不需要管。一般只需要接VCC ,GND 和自行定义的(io)引脚头文件#ifndef _DHT11_H#define _DHT11_H#include "system.h"#include "stdio.h"#include "SysTick.h"void DHT11_IO_OUT(); void DHT11_IO_IN(); vo原创 2020-11-24 17:59:18 · 1323 阅读 · 0 评论 -
在stm32上对于火焰模块的应用分析
在stm32上对于火焰模块的应用分析一.火焰模块接线说明:+ 供电(3.3v) G 接地(GND)AO模拟输入 DO数字输出以stm32f407举例说明:AO接入:PF7DO接入:PA4(实际上也可以不接,因为本实例没用到)二.火焰模块的数据分析;火焰模块实际是和光敏模块是类似的。都是将模拟量通过adc获取后再通过dac转化为数字信号量,输出到串口上如图。通过对这些数字信号量处理,便可以设置适当的警报。三.代码示例头文件#ifn原创 2020-11-23 16:18:31 · 4701 阅读 · 4 评论 -
对在stm32上(hc-sr04)超声波模块的应用解读
一.对在stm32上(hc-sr04)超声波模块的应用解读1.stm32F4上关于超声波模块的简单介绍。(2)代码程序:头文件#ifndef _sr04_H#define _sr04_H#include "system.h"void sr04_init(void);uint32_t sr04_get_distance(void);#endif主文件#include "sr04.h"#include "SysTick.h"void sr04_init(void){原创 2020-11-20 09:42:34 · 1528 阅读 · 0 评论 -
在stm32f4上对(28byj48)步进电机运行介绍
在stm32f4上对(28byj48)步进电机运行介绍1.对于步进电机的驱动电路介绍。步进电机不能直接的和单片机进行连接,需要驱动模块来实现单片机对步进电机进行控制。对驱动模块的接线说明通过对电路图的观察IN1~7 为单片机的io输出端接线。(四相)IN1 ~ 4.1C ~ 7C为步进电机的(线)本程序是四相四线步进电机程序(对几相几线不清楚的可以去查)。电源接线(GND,VCC,空,VCC)(2)步进电机程序头文件#ifndef _28byj48_H#define _28byj原创 2020-11-17 16:40:16 · 1801 阅读 · 0 评论 -
关于stm32f4上对(28byj-48)步进电机的应用控制和解读。
1.关于stm32f4上对(28byj-48)步进电机的应用控制和解读。(1).ULN2003驱动模块电路步进电机不能直接和单片机连接,需要对应驱动模块提供电机所需的电流。电路图分析:IN1~7为单片机的输出io连接端。1C~7C为相数对应(A ~ G).根据电路图将接地和供电分别接入。从左往右(分别接入GND,VCC,空,VCC);vcc为5v电压。驱动模块的接线图。(2).28byj48.h头文件#ifndef _28byj48_H#define _28byj48_H#i原创 2021-08-19 17:03:25 · 2094 阅读 · 4 评论