STM32
文章平均质量分 64
赤子001
从事软硬件设计;FPGA实现,算法研究等,希望和各位同仁积极交流,共同提高,继续提高技术水平,管理能力,职业素养等
展开
-
华大HC32F4A0芯片故障了,不能使用SWD下载怎么办?
单片机一般都是会有两种下载方式,一种是常见的SWD下载方式,另外一种是ISP下载,那么对于华大4A0这款芯片来说,那么在出厂的时候也是固化了一段用于ISP下载的程序的,如果用户在使用过程当中出现了一些意外,比方说不小心擦,除了范围超过了flash原本的地址等等。因为误操作导致了芯片工作于一个不正常的状态,这时候想要恢复正常,必须把这个有问题的用户代码给擦除掉才可以,可是通信不上又如何擦除这似乎就陷入了一个死循环,那么此时就该ISP模式出马了,那么对于华大芯片来说切换ISP。原创 2024-07-13 17:16:47 · 471 阅读 · 0 评论 -
c语言中,指针的含义
c语言中,p = p->next;是什么意思?->是一个整体,它是用于指向结构体、C++中的class等含有子数据的指针用来取子数据。换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”.举个例子:struct Data{int a,b,c;}; /*定义结构体*/struct Data * p;/*定义结构体指针*/struct Data A = {1,2,3};/*声明变量A*/int原创 2022-04-14 09:58:49 · 320 阅读 · 0 评论 -
FreeModbus开源协议栈的(六)FreeModbus状态机和事件总结
FreeModbus开源协议栈的(六)FreeModbus状态机和事件总结从FreeModbus源码中能够发现有很多状态机,了解这些状态机能更快的理解FreeModbus源码流程。下面逐个介绍各个状态机的流程和驱动机制。由于modbus有3种封包模式ASCII,RTU,TCP,这里就以最常用的RTU为例,从源码进行分析,此例程为源码中的win32例程,不过不影响探究流程。分析有不对的地方,欢迎指正1. FreeModbus 串口接收状态机先上一张串口接收状态机,下面代码也是围绕这.转载 2022-03-30 16:12:04 · 2259 阅读 · 0 评论 -
FreeModbus开源协议栈的(五)野火指南者+Keil+FreeModbus 的Modbus RTU从站
在网上关于STM32F103+FreeModbus 的ModbusRTU从站移植的移植有很多,在此记录一下自己在野火的指南者开发板上基于FreeModbus的Modbus RTU从站的过程。文章目录硬件准备野火指南者(STM32F103VET6)软件准备1、freeModbus-v1.62、指南者开发板工程模板(随便一个工程都可以,我习惯用一个移植好库函数的空白工程模板)工程准备工作1、…\freemodbus-master\freemodbus-master\...转载 2022-03-28 19:42:24 · 7403 阅读 · 0 评论 -
FreeModbus开源协议栈的移植和详解(四)- FreeModbus在STM32上的移植
FreeModbus开源协议栈的移植和详解(四)概述在前面几篇文章中,对FreeModbus文件的源码进行了分析,还剩下与平台相关的接口部分,在这里通过对FreeModbus在STM32上的移植过程为例来介绍FreeModbus的接口部分。一、移植前的准备移植FreeModbus之前需要准备好FreeModbus源码,关于源码的获取方式,参考我之前的文章:https://blog.csdn.net/u014100102/article/details/90453930STM32的转载 2022-03-28 19:26:43 · 3768 阅读 · 0 评论 -
移植FreeModbus
freeemodbus百度百科(介绍比较详细)https://baike.baidu.com/item/freemodbus/7566841?fr=aladdinSTMC2CubeMX | STM32 HAL库移植FreeModbus详细步骤https://blog.csdn.net/qq153471503/article/details/104840279ModBus协议简介及移植到STM32单片机https://blog.csdn.net/silent123go/article/details原创 2022-03-28 18:36:38 · 1027 阅读 · 0 评论 -
FreeModbus开源协议栈的移植和详解(二)- modbus主流程分析
FreeModbus开源协议栈的移植和详解(二)概述本篇主要介绍main函数以及mb.c文件,通过这两部分,我们能够从整体上分析FreeModbus。一、从main函数说起打开FreeModbus文件夹中的demo文件夹,该文件夹下是各个平台下的demo,这里我们选择AVR平台来分析。打开AVR文件夹下的demo.c文件,main函数代码如下:intmain( void ){ const UCHAR ucSlaveID[] = { 0xAA, 0xBB, 0x转载 2022-03-28 18:30:56 · 3938 阅读 · 0 评论 -
FreeModbus开源协议栈的移植和详解(三)- RTU协议代码分析
FreeModbus开源协议栈的移植和详解(二)目录概述一、RTU文件夹的文件二、mbrtu.c文件2.1数据类型说明2.2函数说明2.1eMBRTUInit()函数2.2eMBRTUStart()函数2.3eMBRTUStop()函数2.4eMBRTUReceive()函数2.5eMBRTUSend()函数2.6xMBRTUReceiveFSM()函数2.7xMBRTUTransmitFSM()函数2.8xMBRTUTimerT35Expired()转载 2022-03-28 17:42:00 · 3010 阅读 · 0 评论 -
FreeModbus开源协议栈的移植和详解(一)- FreeModbus的下载和文件结构
引言很多做单片机或者嵌入式的朋友对Modbus协议应该不陌生了,Modbus协议也已经成为工控界设备之间通信的一种标准协议。笔者刚开始接触Modbus协议的时候,是自己按照Mod bus协议自己来写的代码,后来接触到FreeModbus后,就开始使用FreeModbus来搭建自己的软件,使用开源的协议栈可以很方便地进行开发,在这里记录下自己对FreeModbus的理解。建议初次接触Modbus协议的朋友先自己尝试写一个协议,这样可以加深对Modbus协议的理解,等对协议充分了解之后,无论是使用Fre..转载 2022-03-28 17:37:21 · 1428 阅读 · 0 评论 -
Systick定时器几个简单的函数简介
Systick定时器Systick定时器是什么?Systick定时器就是系统滴答定时器,一个24 位的倒计数定时器,计到0 时,将从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作;SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常中断请求(异常号:15);Systick中断的优先级也可以设置。 CTRL SysTick控制和状态寄存器 .转载 2022-03-22 15:30:39 · 1130 阅读 · 0 评论 -
MCU_GPIO工作原理
https://blog.csdn.net/weixin_50722839/article/details/115908694原创 2021-12-03 15:35:49 · 352 阅读 · 0 评论 -
【无标题】
华大单片机GPIO配置https://blog.csdn.net/willOkay/article/details/106580003芯缘意码的文章,比较详细;HC32 GPIO使用注意点https://blog.csdn.net/zhaopenglihui/article/details/118055778也总结的比较好华大单片机 HC32F460 GPIO配置说明https://blog.csdn.net/jianminmin1318987744/article/details/12074原创 2021-12-02 15:46:15 · 662 阅读 · 0 评论 -
超经典的STM32学习笔记——第一章GPIO口
超经典的STM32学习笔记——第一章GPIO口http://blog.chinaunix.net/uid-29270628-id-4346616.html固件库中与GPIO有关的函数主要有:原创 2021-12-02 15:43:39 · 292 阅读 · 0 评论 -
结构体定义typedef struct
这句话定义了一个位域,bit0是该位域的域名,而且bit0只占用一个位。位域是指信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。为了节省存储空间,并使处理简便,C语言提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示。#define Uint unsigned inttypedef struct{Ui转载 2021-12-02 10:39:26 · 688 阅读 · 0 评论 -
ST-link/V2引脚定义
https://blog.csdn.net/qq_32693119/article/details/88799879原创 2021-11-03 16:04:57 · 633 阅读 · 0 评论 -
STM32-增量式旋转编码器测量
阅读目录一、增量式旋转编码器二、硬件设计三、软件设计Development kit:MDK5.14IDE:UV4MCU:STM32F103C8T6回到顶部一、增量式旋转编码器1、简介编码器(encoder)是将信号(如比特流)或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。编码器把角位移或直线位移转换成电信号,前者称为码盘,后者称为码尺。按照读出方式编码器可以分为接触式和非接触式两种;按照工作原理编码器可分为增量式和绝对式两类。增量式编码器是将位移转换成周期性的电信号转载 2021-10-21 17:55:39 · 2528 阅读 · 1 评论 -
STM32定时器---正交编码器模式详解
编码器分类:按工作原理:光电式、磁电式和触点电刷式按码盘的刻孔方式:增量式和绝对式两类由于博主接触面还不是很广,一共就用过两个种类的编码器,都是属于光电的差分编码器:一般由8根线连接 信号线分别为 A+ A- B+ B- Z+ Z- 以及VCC和GND这里有一种不需要Z信号的,6线差分A+ A- B+ B- VCC 和GND正交编码器:一般是5根线连接,信号线分别为A B Z VCC和GND编码器线数: 就是旋转一圈你的A(B)会输出多少个脉冲 ,这里的A B就是上面的输出脉冲信号线,它们转一转载 2021-10-21 17:46:53 · 9972 阅读 · 1 评论 -
增量式编码器和绝对式编码器,ABI信号和UVW信号、编码器PWM信号
一、编码器的分类根据检测原理,编码器可分为光学式、磁式、感应式和电容式,根据其刻度方法及信号输出形式,可分为增量式、绝对式以及混合式三种。1、增量式编码器 增量式编码器是直接利用光电转换原理输出三组方波脉冲A、B和Z相;A、B两组脉冲相位差90。,从而可方便的判断出旋转方向,而Z相为每转一个脉冲,用于基准点定位。它的优点是原理构造简单,机械平均寿命可在几万小时以上,抗干扰能力强,可靠性高,适合于长距离传输。其缺点是无法输出轴转动的绝对位置信息。2、绝对式编码器 绝对式编码器是直接输出数字的传感器,在它转载 2021-10-21 15:24:06 · 6255 阅读 · 0 评论 -
增量式编码器 绝对值编码器
机器人运行过程中,电机转动会产生各种干扰信号。通过两组电源给机器人驱动系统和控制系统供电,以消除干扰对稳定性的影响。码盘加陀螺仪的方法在应用过程中发现陀螺仪的角度会随着机械振动发生漂移,影响定位精度。光电编码器,是一种集光、机、电为一体的数字测角装置。作为一种重要的角度传感器,在众多领域用途广泛。光电编码器的核心部件是光电器件,它是能将光能转换为电能的一种传感器。光电转换的理论基础是光电效应,即金属、半导体等材料在光照下释放出光电子的现象。近年来随着科技的发展,传统的光学编码器在使用中存在许多无法克服的转载 2021-10-21 15:16:29 · 5124 阅读 · 0 评论 -
【STM32】可变焦、聚焦摄像头驱动电路与驱动程序——两相四线步进电机驱动
文章目录总体介绍 1.步进电机简介 1)什么是步进电机 2)为何需要驱动电路 3)步进电机的几个概念 2.变焦摄像头参数与结构介绍 1)本款变焦摄像头结构 2)其节拍表 3)其对应线序表 4)镜头实物图 3.基础硬件测试驱动 1)整体原理图 2)PCB电路 3)3D_PCB 4.STM32控制驱动程序设计 1)端口定义与函数声明 2)步进电机驱动函数 3)按键简单调用转动步进电机【正反转】转载 2020-08-31 17:10:31 · 8027 阅读 · 4 评论 -
nrf51822硬件IIC实现有点蛋疼,详细软件IIC实现方法
最近使用51822的IIC,由于这款芯片自带硬件IIC,遂优先考虑硬件IIC方案但其实项目进行的过程中十分不顺利主要过程如下先在SDK10.0中找这个文件twi_hw_master.c这个文件其还有twi_master_config.h这个头文件用win10文件夹里面搜索即可其实里面的内容很简单twi_master_config.h#ifndef TWI_MASTE...转载 2020-02-19 20:19:55 · 1120 阅读 · 2 评论 -
IIC读取:SDA_in SDA_out寄存器设置
IIC读取语句里的语句:uchar DAC5571_check(void){ uchar slaveack; SDA_in; SCL_H; I2C_delay(); slaveack = SD...转载 2020-02-16 21:30:25 · 1788 阅读 · 0 评论 -
I2C_Wait_ACK中 超时计数 为什么是250
最近在研究单片机驱动,开发板用的神州王;例程时钟120MHz;IIC中,有个地方有疑惑TCS34725_I2C_Wait_ACK()超时计数 为什么是250?uint8_t TCS34725_I2C_Wait_ACK(){ uint8_t timeOut = 0; TCS_SDA_DIR_IN();//SDA设置为输入 ...原创 2020-02-14 16:41:16 · 3617 阅读 · 0 评论 -
i2c时序图的详细讲解
i2c简易时序图 启动信号: SCL为高电平的时候,SDA由高电平向低电平跳变。结束信号:SCL为高电平的时候,SDA由低电平向高电平跳变。 应答信号: I2C总线上的所有数据都是以8位字节传送的,发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。应答信号为低电平时,规定为有效应答位(ACK简称应答位),表示接收器已经成功地接收了该字节;应答信...转载 2020-02-14 11:26:43 · 21522 阅读 · 2 评论 -
I2C设备、读写地址的关系
结论:I2C设备的写地址 = I2C设备地址 << 1I2C设备的读地址 = (I2C设备地址 << 1) + 1例如:#define MAX_17040_BATTERY_I2C_ADDR(0x36)#define MAX_17040_BATTERY_WRITE_ADDR(MAX_17040_BATTERY_I2C_AD...转载 2020-02-14 11:25:01 · 1738 阅读 · 0 评论 -
STM32使用keil串口输出中文乱码问题
问题状态:已解决问题描述:在进行串口实验时,我们发现使用串口调试助手输出的中文全是乱码(不是文件中的中文乱码,是串口输出的时候出现乱码),见以下图片:解决方案:1.首先在你的文件中找到main.c文件,然后使用记事本打开,然后保存另存为,选择ANSI编码(原来默认的是UTF-8),替换原来文件。2.然后重新编译工程,下载到开发板,再打开串口调试助手,然后我们发现问题已...转载 2020-02-13 11:01:29 · 2319 阅读 · 3 评论 -
STM32延时函数的三种方法——最好掌握第三种
https://blog.csdn.net/luodonghuan1/article/details/46573501单片机编程过程中经常用到延时函数,最常用的莫过于微秒级延时delay_us( )和毫秒级delay_ms( )。1.普通延时法这个比较简单,让单片机做一些无关紧要的工作来打发时间,经常用循环来实现,不过要做的比较精准还是要下一番功夫。下面的代码是在网上搜到的,经测试延时...转载 2020-01-04 10:16:20 · 15407 阅读 · 3 评论 -
I2C时序小结
I2C两根线,时钟线(SCL),数据线(SDA),双向传输,半双工,主从关系,串行通信,适合器件之间短距离传输、非经常性传输数据,每次传输数据会带上目的设备的设备地址,因此可以实现组网。写时序如下:Masket发送起始信号(SDA从高电平到低电平) Masket发送七位Slave address和一位读写位(写信号),等待ACK Slave发送ACK Mas...转载 2019-03-04 11:02:22 · 1421 阅读 · 0 评论 -
解释#define RCC ((RCC_TypeDef *) RCC_BASE)
解释#define RCC ((RCC_TypeDef *) RCC_BASE)http://www.51hei.com/bbs/dpj-24813-1.html(出处: 单片机论坛) #define RCC ((RCC_TypeDef *) RCC_BASE)RCC_TypeDef是一个定义的结构体RCC_BASE是一个unsigned long(32位数值)简化后是:(int...转载 2019-02-08 19:29:33 · 1698 阅读 · 2 评论 -
C语言运算符优先级和结合性一览表
转载自http://c.biancheng.net/view/161.html所谓优先级就是当一个表达式中有多个运算符时,先计算谁,后计算谁。这个其实我们在小学学算术的时候就学过,如1+4÷2。但是C语言中的运算符已经远不止四则运算中的加减乘除了,还有其他很多运算符。当它们出现在同一个表达式中时先计算谁后计算谁呢?所以本节还是有必要讲一下的。最后我还会将所有运算符展示出来,然后告诉你哪个优先...转载 2019-02-05 20:48:53 · 388 阅读 · 0 评论 -
STM32F429 使用 TCS34725 颜色传感器的驱动程序
用到了 TCS34725 颜色传感器,网上百度一圈都没有发现驱动程序,自己照着 Arduino 的程序和数据手册写了下,记录一下 (~ ̄▽ ̄)~第一步,先来看看数据手册,了解到 TCS34725 是 I²C 器件,那就好办了,根据以前写的 I²C 驱动改一改就好啦 b( ̄▽ ̄)d(具体代码贴在后边)。Communication of the TCS3472 data is accomplish...转载 2019-01-18 10:16:38 · 4841 阅读 · 2 评论 -
Keil(MDK-ARM)介绍、下载、安装与注册--转载
写在前面:感谢作者strongerHuang,亲测OK的,有需要的请移步stronger的blog。 Ⅰ、写在前面本文讲述的内容是Keil MDK-ARM版的介绍、下载、安装与注册,如果需要了解Keil C51版相关的文章,可以到我博客,或微信公众号查看并下载。 Keil(C51)介绍、下载、安装与注册:http://blog.csdn.net/ybhuangfugui/a...转载 2019-02-03 08:28:27 · 1853 阅读 · 0 评论