自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

GREYWALL

我的技术笔记,温故而知新(有问题可以之间私信或者直接评论O(∩_∩)O)

原创 FOC中的Clarke变换和Park变换详解

永磁同步电机是复杂的非线性系统,为了简化其数学模型,实现控制上的解耦,需要建立相应的坐标系变换,即Clark变换和Park变换。

2019-12-23 21:55:23

阅读数 217

评论数 3

原创 STM32 使用IQmath实现SVPWM

TI的片子很香,做的也很好,但是成本相对ST会更高,电机控制方面,TI无疑是做的最好的方案之一,另外TI针对没有浮点运算器的定点DSP推出了IQMATH库,在使用Q格式对数据进行分析和处理的过程中,十分方便,代码也变得更加简洁,本文将使用TI的方案实现SVPWM,在这里感谢TI。 测试平台参数: ...

2020-01-19 22:57:16

阅读数 18

评论数 0

原创 matlab读取csv文件并显示

传统的方式可以通过读取文件,然后处理字符串的方式对`csv`文件进行解析,在`matlab`中可以通过`csvread`函数读取`csv`文件,然后通过`plot`对数据进行显示,也可以对里面的函数进行分析;

2020-01-19 09:45:32

阅读数 26

评论数 0

原创 FOC:在MCU上检验Clark和Park坐标变换是否正确

前言 仿真简单,可以参考仿真的结果,但是实际中将代码移植到MCU,会出现一些新的问题,所以需要对坐标变换部分算法进行测试,最终可以将结果同仿真进行对比,从而验证坐标变换算法的正确性。本文通过程序中模拟ABC三相信号,最终采集Clark/Park变换之后的数据,通过串口示波软件显示,最终与仿真进行对...

2020-01-13 20:53:45

阅读数 58

评论数 0

原创 C:__attribute__ weak 的作用

`weak`经常出现在各种`c`代码中,其作用是将当前文件的对应函数声明为弱函数符号,如果外部文件出现相同的函数名,最终编译出来的 文件会优先指向外部文件的函数符号。

2020-01-11 23:33:55

阅读数 15

评论数 0

原创 STM32 TIM1高级定时器RCR重复计数器的理解

`TIMx_RCR`重复计数器寄存器,重复计数器只支持高级定时器`TIM1`和`TIM8`,下面看标准外设库的`TIM`结构体的封装;对重复计数器的作用进行介绍。

2020-01-07 20:02:24

阅读数 28

评论数 0

原创 hex文件格式总结

hex文件格式总结 本文会结合具体实践过程中遇到的问题,对hex文件做一个新的认识。 什么是hex文件? hex是用于文件格式是intel规定的标准,总体来说,hex是文本文件,经常在微控制器的固件开发中看到hex的身影,例如基于STM32F103硬件,使用MDK开发的话,该软件就可以生成hex文...

2020-01-06 18:53:13

阅读数 29

评论数 0

原创 C:extern "C" 的作用

经常在C语言的头文件中看到下面的代码: ```c #ifdef __cplusplus extern "C" { #endif // all of your legacy C code here #ifdef __cplusplus } #endif ``` 这通常用于`C...

2020-01-01 20:19:55

阅读数 76

评论数 0

原创 STM32 Bootloader基于ymodem传输协议串口IAP升级详解

预备知识 基于标准外设库(STM32F10x_StdPeriph_Lib_V3.5.0)的IAP升级相关资料可以参考 IAP ST官方资料汇总。STM32升级的三种方式:IAP,ICP,ISP;本文需要实现STM32的Bootloader基于ymodem协议通过串口进行固件升级。 硬件:stm32...

2019-12-31 23:54:35

阅读数 122

评论数 0

原创 STM32 串口USART DMA方式发送接收数据

`DMA`,直接内存存取,类似用它的双手释放`CPU`的灵魂,所以,本文通过`USART3`进行串口收发,接受使用DMA的方式,无需`CPU`进行干预,当接受完成之后,数据可以直接从内存的缓冲区读取,从而减少了`CPU`的压力。 具体的代码实现如下: - `usart_driver.h` 封装...

2019-12-28 22:36:09

阅读数 28

评论数 0

原创 STM32 标准库3.5修改默认外部8M晶振为16M晶振

ST官方标准库V3.5默认的外部晶振频率为8M,实际使用中外部晶振需要修改为16M;经过实验,修改有效。

2019-12-28 08:39:27

阅读数 24

评论数 0

原创 STM32 IAP 升级官方资料汇总

标准库版本 STM32F10xxx in-application programming using the USART (AN2557) STM32F2xx in-application programming using the USART (AN3374) STM32F4 in-ap...

2019-12-26 17:32:55

阅读数 28

评论数 0

原创 STM32 进行软件复位的方法

platform:stm32f103xx include:core_cm3.h /** \brief System Reset \details Initiates a system reset request to reset the MCU. */ __NO_RETURN __S...

2019-12-24 11:44:37

阅读数 31

评论数 0

原创 有感FOC算法学习与实现总结

`Field Oriented Control` 磁场定向控制 (`FOC`),`FOC`是有效换向的公认方法。`FOC`的核心是估计转子电场的方向。一旦估计了转子的电角度,就将电动机的三相换相,以使定子磁场垂直于转子磁场。本文参考了`TI`,`microchip`的相关文档,基于`STM32F1...

2019-12-22 22:10:03

阅读数 102

评论数 0

原创 永磁同步电机 spmsm 和 ipmsm 的区别总结

layout: post tags: [motor control] comments: true 永磁同步电机的转子是永磁体,在结构上的区别主要是永磁体的安装位置上的差别,可以分为: 内置式永磁同步电机,有时候也叫 嵌入式永磁同步电机 表贴式永磁同步电机 不过有时候又会看到凸极特性和隐极特性...

2019-12-20 20:20:39

阅读数 46

评论数 0

原创 Jekyll 解决Jekyll server本地预览文章not found的问题

layout: post tags: [Jekyll] comments: true 执行Jekyll本地浏览器预览指令 bundle exec jekyll serve 进入浏览器输入127.0.0.1:4000,可以正常浏览首页,但是点击文章链接,则会显示404页面,查看控制台显示错误的l...

2019-12-14 13:00:57

阅读数 31

评论数 0

原创 STM32 TIM 多通道互补PWM波形输出配置快速入门

platform:stm32f103cb 前言 在做三相逆变的时候,需要软件生成SVPWM波形,具体的算法需要产生三对互补的PWM,这样可以驱动六个开关元件,stm32f103中的TIM1定时器就支持这种做法,并且 PWM产生的原理 官方DEMO 带死区的互补PWM 带刹车功能的PWM 参考 ....

2019-11-21 19:43:20

阅读数 52

评论数 0

原创 STM32 TIM1高级定时器配置快速入门

layout: post tags: [STM32] comments: true 文章目录layout: post tags: [STM32] comments: true重点内容时基单元计数模式 重点内容 不管是基于标准库还是直接操作寄存器,因为TIM定时器的功能比较多,这里单纯只从定时器的角...

2019-11-21 18:52:43

阅读数 50

评论数 0

原创 STM32 ADC多通道规则采样和注入采样

layout: post tags: [STM32] category: STM32 comments: true 什么是ADC? Analog to Digital Converter,将模拟信号转换成数字的模数转换器,后面可能还会接触到DAC,恰恰相反,是将数字信号转换成模拟信号。具体的原理可...

2019-11-14 20:46:43

阅读数 48

评论数 0

原创 STM32 时钟树配置快速入门

layout: post tags: [STM32] comments: true 文章目录layout: post tags: [STM32] comments: true为什么要了解时钟树?树的根标准库的时钟配置外部时钟源16MSetSysClockTo72patch其他细节 为什么要了解时钟...

2019-11-05 21:57:56

阅读数 55

评论数 0

原创 STM32 TIM 编码器模式采集编码器信号

## 什么是正交解码? 对于常用增量式编码器,光学编码器,采用带槽圆盘,一侧是发射光线的发射端,而光电晶体管在相对的一侧。当圆盘转动时,光程被阻断,得到的脉冲指示轴的转动和方向。通常的说法是1000线的编码器,即转一圈会产生1000个方波脉冲,马盘上刻了1000个栅格,中间被镂了1000个空,举个...

2019-10-26 10:46:00

阅读数 65

评论数 0

原创 STM32 标准库V3.5启动文件startup_stm32f10xxx.s分析

layout: post tags: [STM32] comments: true 文章目录layout: post tags: [STM32] comments: true前言分析startup_stm32f10x_md.s汇编指令EQUAREASPACEDCDPROCLDR常见的转移指令源码分...

2019-10-25 21:43:33

阅读数 120

评论数 0

原创 数据结构学习:二叉查找树的概念和C语言实现

二叉查找树C语言实现 二叉查找树是将数值比当前节点数值大的优先放到左子树,数值被当前节点大的放倒右子树; 1) Node to be deleted is leaf: Simply remove from the tree. 50 ...

2019-08-31 09:14:12

阅读数 26

评论数 0

原创 数据结构学习:什么是树?

概念 A tree is a nonlinear data structure, compared to arrays, linked lists, stacks and queues which are linear data structures. A tree can be empty wi...

2019-07-30 14:38:59

阅读数 243

评论数 0

原创 linux gdb快速入门教程

对于想要学习gdb调试的童鞋,网上搜一下就是一大堆资料,信息太多而不知道该如何筛选了,当然最有效的方式是去看gdb的手册,但是对于想快速上手的我,需要掌握最常用的一些指令和一些技巧,期间,我找到了一个很全很强大的教材,感觉就是gdb bible——100-gdb-tips,100-gdb-tips...

2019-07-30 08:42:04

阅读数 289

评论数 0

原创 Linux高性能服务器技术总结

服务器是提供计算服务的设备, 由于服务器需要响应用户请求,因此在处理能力、稳定性、安全性、可扩展性、可管理性等方面提出了较高要求。随着虚拟化技术的进步, 云服务器(ECS) 已经快速的在国内普及开来, 其管理方式比物理服务器更简单高效。用户可迅速创建或释放任意多台云服务器, 帮助企业降低开发运维的...

2019-07-23 15:11:14

阅读数 268

评论数 0

转载 使用 Visual Studio Code 搭建 C/C++ 开发和调试环境

文章目录1. 安装 C/C++ 插件2. 安装 MinGW-w64 并配置好环境变量3. 测试环境变量是否配置正确4. 创建和设置 C 语言开发工作区5. 编写你的第一个 C 语言程序6. 配置导入的头文件参数 c_cpp_properties.json7. 配置调试程序 launch.json8...

2019-07-23 15:06:17

阅读数 171

评论数 0

原创 数据结构学习:树的遍历 前序 中序 后序 层序

文章目录树的遍历深度优先遍历前序遍历(Pre Order Traversal)中序遍历(In Order Traversal)后序遍历(Post Order Traversal)广度有限遍历层序遍历(Level Order Traversal)例子参考 树的遍历 深度优先遍历 前序遍历(Pre O...

2019-07-13 21:38:18

阅读数 178

评论数 0

原创 u-boot 移植(二)创建新平台的板级支持

## 如何添加新的板级支持? 因为`u-boot-2016.11`默认支持smdk2410的平台,但是没有对smdk2440的支持,所以在这里我打算在源码中添加相应的文件;实践之后,总结了一下大概需要修改这几个地方,简单列举如下: 1. 复制`board/samsung/smdk2410`路径下的...

2019-07-04 14:02:32

阅读数 90

评论数 0

原创 u-boot 移植(一)编译环境搭建

u-boot 移植(一)编译环境搭建 `soc`:s3c2440 `board`:jz2440 `uboot`:[u-boot-2016.11](http://ftp.denx.de/pub/u-boot/u-boot-2016.11.tar.bz2) `toolchain`:[gcc-linar...

2019-07-03 15:39:21

阅读数 353

评论数 0

原创 u-boot spl 学习总结

什么是SPL? `SPL(secondary program loader)`是一个十分小的bin文件,它是用来引导主u-boot文件。对于一些`SRAM`很小的`SOC`,无法一次性加载`ROM`中的`bootloader`到`SRAM`中,因为一般`SRAM`远远小于`bootloader`...

2019-07-03 15:02:32

阅读数 134

评论数 0

原创 u-boot: Not enough room for program headers, try linking with -N

在编译`u-boot`的时候出现了以下错误: ```shell arm-linux-gnueabi-ld.bfd: u-boot: Not enough room for program headers, try linking with -N arm-linux-gnueabi-ld.bfd: ...

2019-07-01 18:25:36

阅读数 248

评论数 0

原创 Ubuntu系统make menuconfig的依赖包ncurses安装

Linux内核或者u-boot进行make menuconfig的时候,如果系统上没有安装ncurses,就会出现以下报错 *** Unable to find the ncurses libraries or the *** required header files. *** '...

2019-07-01 18:24:53

阅读数 133

评论数 0

原创 用VirtualBox代替VMWare安装Ubuntu系统图文教程总结

为什么使用VirtualBox,而不是VMWare? 其实在相当长的一段时间里,我一直都是使用`VMWare`,优点很多,强大,功能多,非常舒服,但是要收费。 为什么开始使用用`VirtualBox`,相比较`VMWare`,首先`VirtualBox`有以下几个优点: - 开源,免费,不需要破解...

2019-06-29 15:25:55

阅读数 196

评论数 0

原创 shell bash终端中输出的颜色和格式详解

文章目录FormattingSetReset8/16 Colors前景(文字)背景 ANSI/VT100终端和终端仿真器不只是能够显示黑色和白色文本; 由于转义序列,它们可以显示颜色和格式化文本。这些序列由Escape字符(通常用“ ”或“ ”表示)组成,后跟一些其他字符:“<Esc>...

2019-06-19 14:45:29

阅读数 786

评论数 0

原创 Linux dts 设备树详解(二) 动手编写设备树dts

在简单了解概念之后,我们可以开始尝试写一个简单的设备树,从而加深对设备树整体架构以及部分语法的理解,因为整体知识面比价庞杂,无法面面俱到,本文旨在笔者学习之初对于设备树常用部分的总结与归纳。因为会涉及到很多硬件信息的绑定,详细的可以查阅Linux内核源码下的文档`Documentation/dev...

2019-06-12 09:41:21

阅读数 1029

评论数 2

原创 Linux内核驱动学习(十)Input子系统详解

这次主要会学习Linux中对于输入设备统一封装的框架,在计算机组成原理中,我们可以知道计算机的组成主要分为五个部分:控制器,运算器,存储器,输入,输出。可见,输入作为其中的一个子系统,但是对于众多的设备来说,需要一套统一的规范。所以,在嵌入式系统中的外设,鼠标、键盘、按键、G-Sensor等等都可...

2019-06-11 15:44:56

阅读数 268

评论数 0

原创 Linux内核驱动学习(九)GPIO外部输入的处理

文章目录两种方式轮询外部中断如何选择设备树代码分析总结附录 两种方式 轮询 外部中断 如何选择 对于实时要求相对较高的情况,建议使用外部中断, 设备树 代码分析 总结 附录 ...

2019-05-13 21:01:00

阅读数 100

评论数 0

原创 Linux dts 设备树详解(一) 基础知识

设备树(Device Tree)是描述计算机的特定硬件设备信息的数据结构,以便于操作系统的内核可以管理和使用这些硬件,包括CPU或CPU,内存,总线和其他一些外设。 设备树是通过`Open Firmware`项目从基于SPARC的工作站和服务器派生而来的。当前的Devicetree一般针对嵌入式系...

2019-05-06 22:56:31

阅读数 1191

评论数 0

原创 Linux内核驱动学习(八)GPIO驱动模拟输出PWM

上一篇的学习中总结了GPIO的一些基本的概念,GPIO驱动在设备树中的写法,Linux系统下配置gpiolib的方法以及常用接口,本篇的学习总结会进行一次实战操作GPIO,将实现一个驱动可以对IO口进行输入输出以及外部中断的接收等等操作。

2019-05-06 22:55:33

阅读数 780

评论数 0

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