自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

IT_BOY的博客

专注技术

  • 博客(54)
  • 资源 (3)
  • 收藏
  • 关注

原创 堆和栈最准确理解~透彻

堆和栈是我们在开发的过程中经常遇到的概念,也是最容易搞混和糊涂的概念,这两天下决心经过查资料问人,终于把堆和栈的概念搞的清清楚楚了,下面是网上一位广东的大哥给我的解释,再次感谢,我觉得这个解释很精炼了,但是有一点小问题堆和栈的第一个区别就是申请方式不同:栈(英文名称是stack)是系统自动分配空间的(准确的说加粗的这句话时错误的,下面解释\color{RED}{准确的说加粗的这句话时错误的,...

2019-08-09 09:49:53 1027

原创 single-precision operand implicitly

keil警告内容:warning: #1035-D: single-precision operand implicitly converted to double-precision翻译:单精度操作数隐式转换为双精度分析:单精度的(float)乘以双精度的浮点数,隐式转换为双精度数。解决方法:查找对应单精度数字后面加个f...

2021-07-13 18:25:32 3696

原创 调试小细节之内存溢出

调试过程中,莫名其妙的问题总是会时不时冒出来几个,但是不管问题如何怪异,只要细细分析,从每一处不起眼的改动去查找比对,查手册,查软件版本差异,查寄存器,查map文件等等所有相关文件,就一定能解决所有问题;毕竟电子产品的应用开发是二次开发,不是什么创新创造,都是基于现有的给出的规则和定义做新的排列组合。调试对象为51内核的电机控制板现象: 最近在调试一个新的产品过程中,将电机调速由pwm占空比控制改为串口通信控制,移植基本的串口通信功能后,验证了新版硬件的串口收发都能正常工作,且电机功能未受到.

2021-06-21 15:26:35 999

原创 Git常用命令整理归纳

结合上图片可以更深入理解git的本质几个专用名词的译名如下。Workspace工作区Index / Stage暂存区Repository仓库区(或本地仓库)Remote远程仓库文章目录Git常用命令(可拷贝)Git配置初始化项目当前状态删除文件放弃文件更改提交到本地列出分支从远程获取更新并将当前分支与上游(upstream)合并创建一个新分支将本地更新推送到远程删除分支切换到新分支生成SSH秘钥如何将add的文件从缓存区删除markdown 文件换行方法..

2021-06-17 10:36:49 216

原创 git常用命令之生成ssh秘钥

ssh-keygen -t rsa -C “[email protected]”引号内为邮箱地址,输入后一直点enter,然后一般生成两个秘钥pub结尾的为公共秘钥,另一个为私有秘钥(不要外发);把公共秘钥发给管理员即可。

2021-05-06 11:21:51 219

原创 无刷电机FOC无感控制-关于单电阻采样时,机械周期与载波频率之间的必要关系

2021-03-21 02:59:20 1930

原创 QT学习——指定父对象的两种方法

在QT开发过程中,如果不给创建的对象指定父对象,对象和对象(窗口和窗口)没有关系,相互独立,这不符合我们的设计要求;假设有A和B两个对象,A指定B为它的父对象,A放在B的上面指定父对象,有2种方式:1)setParent2)通过构造函数传参指定父对象,只需要父对象显示,上面的子对象自动显示代码和显示效果如下#include <QApplication>#include <QWidget>#include <QPushButton>int main(i

2020-10-22 23:27:54 4587 3

原创 调试小细节之《电阻封装不同带来的影响》

自打从事电控工作以来,对于无感控制来说,采样电阻这个元器件就变得异常敏感和重要,不管是阻值大小和精度的选用还是温升带来的阻值变化,都会极大的影响大电机的运行,选好合理的采样电阻可以减少很多不必要的麻烦,尤其是单电阻采样;现象:最近在使用单电阻采样的无感方案调试一款电机,启动运行一切基本调试结束,因为要发样十套,硬件工程师在更换了完全一样新制作的一套控制板后,电机第一次上电运行只有200W,然后再次上电有280W,多次上电运行后电机功率始终最高达到300W左右,与最初版调试的额定功率470W相差很大.

2020-09-26 02:21:51 1682 2

原创 01-QT下载安装

下载安装包下载地址选择5.11版本下载完成后如下安装2.1双击安装包2.2如果有QT账号就输入账号登陆,没有的话在下面注册一个,然后点击Next点击下一步2.3 选择安装路径,注意路径不可以有中文,然后点击下一步勾选下面选项2.4 其他的根据自己需求进行勾选,然后一直点击下一步即可完成安装;...

2020-08-02 12:05:42 212

转载 电机系统标幺化的好处

电机系统标幺化的好处:对于不同功率、电压值的设备标幺值在一定范围内,具有可比性,而测量值则随之变化;定点DSP控制:可有效防止数据溢出。各个基值的选取方式如下:

2020-06-07 23:04:51 2361

原创 调试小细节 之 ADC采样值出错

adc驱动初始化记录

2020-06-07 22:58:04 6281

原创 队列——循环队列、链式队列介绍和C语言实现源码

线性结构: 有且只有一个根节点,且每个节点最多有一个直接前驱和一个直接后继的非空数据结构**非线性结构:**不满足线性结构的数据结构 队列1、基本概念:1.1 定义:队列是指允许在一端进行插入,在另一端进行删除的线性表,又称“先进先出”的线性表队列是一种特殊的线性结构,它只允许在队列的首部(head)进行删除操作,这称为出队,在尾部进行加入数据操作,称为入队;队列这种数据结构非常容易理解,就像我们平时去超市买东西,在收银台结账的时候需要排队,先去排队的就先结账出去,排在后面的就后结.

2020-06-02 23:24:47 1230 4

转载 C语言之联合体Union

C语言之联合体Union共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。定义共用体Union为了定义共用体,您必须使用 union 语句,方式与定义结构类似。union 语句定义了一个新的数据类型,带有多个成员。union 语句的格式如下:union [union tag]{ member definition; member definition

2020-05-14 22:54:34 625

原创 电机常用术语解释

从事无刷电控工作以来,接触不少电机方面的术语,小结一下极对数(P):电机转子中N-S极的对数相数(m):电机绕组个数电角度(θe)/机械角度(θ):θe = P * θ电角频率(ωe)/机械角频率(Ω):ωe = P * Ω电角频率与电机转速(n) : n = 60 * ωe / P极(2P)槽(Z)配合:Z/2P相电压:电机相绕组对电机中心点电压线电压:电机两相绕组之间电压...

2020-02-08 15:42:05 2197

原创 关于在树莓派上搭建git服务器的权限问题

最近在一个树莓派4B+上搭建一个git仓库给公司做代码版本管控,之前在网上看了教程很简单(用树莓派搭建GIT私有服务器),可是自己操作的时候一直出现无法clone和push的问题,一直提示没有权限或者文件问题,经过反复测试发现问题的关键点就是git仓库权限问题没有配置好;仓库初始化:git init --bare //这里的 --bara意思是搭建一个裸仓库虽然我后面把客户端计算机的公...

2019-12-31 23:45:04 352

原创 调试小细节之数据类型占用字节

最近手里有一款温湿度传感器AM2105,通信接口为单总线通信,介绍如下:当我按照时序正确的读取四十位数据后,按照高位左移八位或上低八位得出实际数据,但是结果却是错误的,而且多次查找都没有找到问题点;程序如下:/*******¶Á40λÊý¾Ý********/void read_hum_temp(void){ uint8_t a; AM2301_Start(); ...

2019-12-09 22:56:20 219 1

原创 C语言之volatile关键字的常用特点

在嵌入式项目开发过程中,我们经常遇到_IO,_I,_O等前缀在类型之前,在常用的单片机开发中可以查看到这些符号的本身是代指volatile关键字,关于_IO在系统级应用中的深入含义及用法暂且不做介绍,这里简单记录一下裸机开发过程中的常规知识点;volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声...

2019-11-26 23:18:24 424

原创 关于stm32单片机准双向IO口配置

我们在开始学习51内核的单片机的时候就知道,p0口的引脚都是双向IO口,P1,P2,P3的IO口需要双向使用时需要外接上拉电阻,故称为准双向IO口,但是我们在学习STM32单片机的时候知道32的IO口可以配置为8种状态,但是却没有双向IO这一选项,但是我们也可以通过一些操作将stm32的引脚配置为准双向IO口;配置stm32的IO口为准双向IO口的方法就是软件上:将需要配置我的准双向IO口的...

2019-10-31 23:24:25 4759

原创 嵌入式软件开发过程中几种常见编程规范

使用四个空格而不是使用tab这条规定乍一看有点奇怪,因为我们已经习惯了开发过程中使用tab键代替空格去分隔程序,为什么要求使用四个空格这种很傻很慢的操作?其实这里要求使用四个空格主要是因为在不同编辑器中对tab键的定义不同,如果混用tab键和space键(空格),会造成程序在移植后变得混乱,不利于程序快速移植使用;比如我常用的MDK5,在设置里可以看到,即使是同一编译器的不同类型文件,输入...

2019-10-31 23:01:07 696

转载 PID算法经典小结

虽然自己参与和独立做过的项目有好几个都用到了PID算法,但是当自己真的想真理总结一下的时候发现别人的已经写的非常好了,自己越写越觉得多余,记录几篇链接做为理论参考PID算法的定义与分类:https://blog.csdn.net/ybhuangfugui/article/details/99826730PID原理和参数调试https://blog.csdn.net/ybhuang...

2019-10-23 21:51:48 571

转载 转:关于data、idata、xdata、code在C51程序中详细解释

51单片机采用哈佛结构。内存空间编址有重叠。可以在不同总线上定义不同的变量。在KEIL C51中定义了xdata、idata、xdata、code几种域修饰符。这些修饰符决定了变量访问方式。data:固定指前面0x00-0x7F的128个RAM,可以用acc直接读写,速度最快,生成的代码也最小。idata:固定指前面0x00-0xFF的256个RAM,其中前128和data的128完全相同,只...

2019-09-08 23:42:26 820

转载 Linux常用命令大全~非常全!非常详细!(带目录查找)

这是一个命令大全,介绍的很详细,可以作为字典查找,mark一下,省的到处找了系统信息arch 显示机器的处理器架构uname -m 显示机器的处理器架构uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上...

2019-08-17 07:09:56 1261

转载 c关键字const详解

最近被人问了个技术问题,感触很深,就是关于const关键字的基本用法判断,看到这个问题我其实挺开心的,因为去年我在书上记录过C 语言的几个常用关键字的基本用法,最近用的少了,都有点生疏遗忘了,技术就是一把容易省生锈的

2019-08-14 16:14:43 338

转载 线程和进程

进程:指在系统中正在运行的一个应用程序;程序一旦运行就是进程;或者更专业化来说:进程是指程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。线程:系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元执行流。进程——资源分配的最小单位,线程——程序执行的最小单位。线程进程的区别体现在4个...

2019-08-14 11:32:54 157

原创 编码器介绍和应用

编码器介绍1. 什么是编码器?简而言之,编码器是一种提供反馈的传感设备。编码器将运动转换为电信号,该信号可由运动控制系统中的某种类型的控制装置读取,例如计数器或PLC。 编码器发送反馈信号,可用于确定位置,计数,速度或方向。控制设备可以使用该信息来发送特定功能的命令2. 编码器如何工作?编码器使用不同类型的技术来创建信号,包括:机械,磁性,电阻和光学 - 光学是最常见的。在光学传感中,编码...

2019-08-09 15:29:14 7194 1

原创 关于 LF will be replaced by CRLF 问题的解决方式

之前公司用git比较多的时候遇到过这个问题,当时搜到这篇文章关于 LF will be replaced by CRLF 问题出现的原因以及解决方式就在下面评论了一句只需要输入git config autocrlf false就行了,rm 这种操作,新手一不小心误操作就惨了,大家注意点没想到点赞的人还挺多的,说明这个解决方法还是不错的,博主的文章解释的挺清楚的,但是解决操作就。。。。。看...

2019-08-09 10:33:19 834

原创 RT-Thread程序启动过程

本文介绍的启动过程是基于STM32F103系列MCU上运行的RTT实时操作系统以下执行步骤通过MDK的debug模式进行单步执行,得出该系统实际的启动过程代码执行步骤如下和裸机相同,第一步执行SystemInit()进行系统时钟初始化,如下图启动文件所示执行第二步就和裸机不同了,这里不是执行_main函数,而是执行RTT的main 函数 $Sub$$mainint rtthr...

2019-08-08 17:51:30 1760

原创 RT-Thread简介

RT-Thread 是一款完全由国内团队开发维护的嵌入式实时操作系统(RTOS),具有完全的自主知识产权。经过近 12 个年头的沉淀,伴随着物联网的兴起,它正演变成一个功能强大、组件丰富的物联网操作系统。1.RT-Thread概述RT-Thread,全称是 Real Time-Thread,顾名思义,它是一个嵌入式实时多线程操作系统,基本属性之一是支持多任务,允许多个任务同时运行并不意味着...

2019-08-08 17:09:48 6741

原创 keil报错error: declaration may not appear after executable statement in block

这是一个常见问题,主要原因是:C语言的C99前的版本变量声明不允许出现在语句之后,这种在语句之后声明变量的方式,c++允许,现在的很多c编译器也允许。最早的c是不许这么写的,要求所有的局部变量必须在函数开头声明。解决办法:...

2019-08-08 10:03:13 1041

原创 git bash 下复制

在git bash 界面下复制命令是insert,没有其他

2019-08-07 11:04:07 300

原创 Linux基础~编译执行C/C++文件

想要成为一名优秀的嵌入式开发从业人员,Linux是必须要学好的,今天就记录以下最简单的入门操作,如何在Linux系统中编译和执行C/C++文件环境:Linux Ubuntu 16.04主要使用工具:vim / gcc / g++第一步:打开Linux系统,右击打开终端第二步:创建新的文件touch test.c 然后回车执行,ls查看第三步:使用vim 打开test.c...

2019-08-06 18:33:38 612

转载 Linux环境下C学习路线

UNIX/Linux下C语言的学习路线。一、工具篇“公欲善其事,必先利其器”。编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道, 下面列出学习C语言编程常常用到的软件和工具。1、操作系统在UNIX或Linux系统中学习C很方便,所以在开始您的学习旅程前请先选择一个UNIX或Linux操作系统,目前可供个人免费使用的UNIX或Linux系统有FreeBSD、Re...

2019-08-06 14:33:40 279

原创 c语言之typedef vs #define

typedef定义: 1. C 语言提供了 typedef 关键字,您可以使用它来为类型取一个新的名字。预处理定义 : 2. C 预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理。我们将把 C 预处理器(C Preprocessor)简写为 CPP。所有的预处理器命令都是以井号(#...

2019-08-06 14:00:53 264

原创 keil新建工程图文详细步骤—方法1

keil是我们在win环境下进行下位机开发最常用的IDE之一,本文将使用keil5并基于标准库v3.5介绍如何一个新建工程;开发环境:Windows10,版本5.27项目名称:demo首先新建如下图的几个文件夹打开keil5点击下图箭头所指找到刚刚新建的文件夹目录,并打开MDK文件夹输入项目名称demo,并点击保存选中所使用的硬件芯片型号,然后点击OK;本...

2019-08-05 14:51:09 8087

转载 C语言之static常用用法详解

本来想自己总结写一下,看到这个人写的挺好挺全面的,简单修改了一下,把时间省在更重要的事情上!C语言代码是以文件为单位来组织的,在一个源程序的所有源文件中,一个外部变量(注意不是局部变量)或者函数只能在一个源程序中定义一次,如果有重复定义的话编译器就会报错。伴随着不同源文件变量和函数之间的相互引用以及相互独立的关系,产生了extern和static关键字。下面,详细分析一下static关...

2019-07-30 10:08:55 591

原创 CAN入门教程~CAN总线的基础知识

1.CAN简介:CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO 国际标准化的串行通信协议。CAN 通过 ISO11898 及 ISO11519 进行了标准化,CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。CAN 控制器根据两根线上的电位差来判断总线电平。总线电平分为显性电平(0)和隐性电平(1...

2019-07-24 18:10:43 7099

原创 C语言之位域的概念和用法

先来个位域申明:struct{ type [member_name] : width ;}元素描述type整数类型,决定了如何解释位域的值。类型可以是整型、有符号整型、无符号整型。member_name位域的名称。width位域中位的数量。宽度必须小于或等于指定类型的位宽度。带有预定义宽度的变量被称为位域。位域可以存储多于 1 位的数,例如,需...

2019-07-24 14:23:14 1218

原创 STM32 外部中断

STM32 的每个 IO 都可以作为外部中断的中断输入口,STM32F103 的中断控制器支持 19 个外部中断事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。STM32F103 的19 个外部中断为:线 0~15:对应外部 IO 口的输入中断。线 16:连接到 PVD 输出。线 17:连接到 RTC 闹钟事件。线 18:连接到 USB 唤醒事件。STM32 供...

2019-07-24 11:54:01 508

转载 a?b:c是什么意思

a?b:c是什么意思这个是条件表达式,表示如果a为真,则表达式值为b,如果a为假,则表达式值为c条件表达式具体说明如下条件语句:if(a>b) max=a;else max=b;可用条件表达式写为max=(a>b)?a:b;执行该语句的语义是:如a>b为真,则把a赋予max,否则把b 赋予max.使用条件表达式时,还应注意以下几点:条件运算符的运算优先级低...

2019-07-17 10:14:19 6192

原创 STM32之模拟I2C通信驱动代码

/******************************************************************************Name: i2c.cDescription: I2C communication functionProject: ****Auther: ZWMCU: STM32F103RET6...

2019-07-15 15:06:10 676

Velocity_sim.zip

一种速度规划方法,可以根据仿真波形,调整规划周期和规划限幅,调整对应的比例系数会有不同的变化曲率。

2019-08-06

SAMDA1系列应用手册

SAMDA1系列应用手册,配合数据收的可以快速开发单片机

2019-03-04

32-bit ARM-Based Microcontrollers

32-bit ARM-Based Microcontrollers,SAMDA1系列数据手册

2019-03-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除