
STM32
文章平均质量分 67
张十三的博客
一个专注于电子/IT开发技术的创客媒体,主要涵盖电子基础技术,软件开发基础技术,物联网,智能家居,开源软硬件,自动控制,仿真,机器人(运动控制,ROS),无人机,机械设计等等
快用 WX 搜索并关注“张十三的博客”和张十三一起搞技术吧!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
经验教训 | STM32 异常之BFARVALID,PRECISERR,INVSTATE
最近有一个项目基于STM32F446ZE MCU使用FREERTOS操作系统开发,之前有部分功能代码是基于MCU裸机开发的,移植过程种发现程序老出错,DEBUG模式条件发现程序停在了HardFault_Handler中断服务程序中:查看对应的错误报告显示BFARVALID和PRECISERR错:查看了两个错误的对应说明(感觉还是不知道是什么原因):通过将任务逐个屏蔽,然...原创 2020-03-17 20:18:56 · 12767 阅读 · 0 评论 -
STM32 电机教程 30 - 无刷无感入门2
前言 无刷直流 (Brushless Direct Current, BLDC)电机是一种正快速普及的电机类型,它可在家用电器、汽车、航空航天、消费品、医疗、工业自动化设备和仪器等行业中使用。正如名称指出的那样,BLDC 电机不用电刷来换向,而是使用电子换向。BLDC 电机和有刷直流电机以及感应电机相比,有许多优点。其中包括:• 更好的转速-转矩特性• 快速动态响应• 高...原创 2020-01-01 17:13:53 · 9038 阅读 · 7 评论 -
STM32 电机教程 29 - 无刷无感入门1
前言 无刷直流 (Brushless Direct Current, BLDC)电机是一种正快速普及的电机类型,它可在家用电器、汽车、航空航天、消费品、医疗、工业自动化设备和仪器等行业中使用。正如名称指出的那样,BLDC 电机不用电刷来换向,而是使用电子换向。BLDC 电机和有刷直流电机以及感应电机相比,有许多优点。其中包括:• 更好的转速-转矩特性• 快速动态响应• 高...原创 2020-01-01 16:44:43 · 12595 阅读 · 1 评论 -
STM32 电机教程 28 - ST MCLIB实战之 位置闭环控制
前言 ST MotorControl Workbench 生成的工程默认实现了电机的电流闭环和速度闭环控制,有些应用场合需要对电机的位置也实现闭环控制,如舵机,伺服系统等,本节就给大家介绍一下基于ST MotorControl Workbench生成的电机工程,如何实现位置闭环控制。 基于ST MotorControl Workbench生成的电机工程,电流(Iq,id...原创 2019-12-23 21:02:08 · 11897 阅读 · 12 评论 -
STM32 电机教程 27 - ST MCLIB实战之 PID参数调节
前言 ST MCSDK中PID部分功能代码在pid_regulator.c文件中,电机库中电机iq,id以及速度环控制均采用PI(对应pi_controller接口)控制器:pid_regulator.c中提供丰富的关于PID控制及相关参数设置接口:如果需要用到PID控制器,在pid_regulator.c末尾,有个pid_controller接口,默认是屏蔽...原创 2019-12-21 14:48:15 · 7635 阅读 · 3 评论 -
STM32 电机教程 26 - ST MCLIB实战之增量式编码器位置传感FOC方案
前言磁场定向控制又称矢量控制(FOC), 本质上为控制定子电流的幅度和相位,使之产生的磁场和转子的磁场正交,以产生最大的扭矩. PMSM的磁场定向控制框图如下图所示:本节将基于NUCLEO-F103RB和X-NUCLEO-IHM07M1 3SH及MotorControl Workbench实现增量式编码器位置传感的FOC算法。所用电机15对极,工作电压24V,最大转速210rpm。...原创 2019-12-14 17:41:18 · 6575 阅读 · 7 评论 -
STM32 电机教程 25 - ST MCLIB实战之开环svpwm控制
前言 上一节已经成功手动将工程修改成绝对式位置传感器方案FOC,有些朋友可能按照上面的操作电机已经成功转动起来了,可能有些朋友的还是有点问题,电机转动不起来有很多因素,如接线相序不对,位置不对,FOC电流环控制参数不好等都有可能使电机转动不起来,那么有没有一种简单且方法来验证到底是哪里的问题使电机转动不起来呢,本节将给大家介绍一般分析流程。1,确保位置传感器(如本例中的绝对式磁编码芯片...原创 2019-12-12 18:19:52 · 9537 阅读 · 3 评论 -
STM32 电机教程 24 - ST MCLIB实战之无感变绝对式位置传感器
前言上一节给大讲演示了如何用ST MotorControl Workbench创建基本STM32F103C8T6芯片的FOC工程并根据实际电路成功创建了工程,但是实际电路使用的是绝对式磁编码器作为电机位置及速度检测传感器,而ST MotorControl Workbench工程中并没有对应的选项可选,因此上一节所创建的工程是无位置传感方式的FOC工程,本节将基于上一节的工程,给大家讲解如何手动...原创 2019-12-12 17:01:49 · 6233 阅读 · 5 评论 -
STM32 电机教程 21 - 基于ST MCLIB无感FOC 与 有感FOC 代码差异分析
前言磁场定向控制又称矢量控制(FOC), 本质上为控制定子电流的幅度和相位,使之产生的磁场和转子的磁场正交,以产生最大的扭矩. PMSM的磁场定向控制框图如下图所示:第19、20讲分别实现了基于NUCLEO-F103RB和X-NUCLEO-IHM07M1 3SH及MotorControl Workbench的单电阻FOC有感(hall)算法及单电阻FOC无感并都让电机运转起来。本节将重...原创 2019-12-06 15:49:21 · 12522 阅读 · 2 评论 -
STM32 电机教程 19 - 基于ST MC Workbench 单电阻FOC
前言 磁场定向控制又称矢量控制(FOC), 本质上为控制定子电流的幅度和相位,使之产生的磁场和转子的磁场正交,以产生最大的扭矩. PMSM的磁场定向控制框图如下图所示:第17及18讲成功实现了基于NUCLEO-F103RB和X-NUCLEO-IHM07M1 3SH及MotorControl Workbench的电机控制代码工程的生成,及电机参数调试工作,成功让电机运转起来,上...原创 2019-12-01 16:13:35 · 9392 阅读 · 0 评论 -
STM32 电机教程 16 - PMSM电机磁场定向控制原理
前言磁场定向控制又称矢量控制(FOC), 本质上为控制定子电流的幅度和相位,使之产生的磁场和转子的磁场正交,以产生最大的扭矩.1. PMSM 的磁场定向控制磁场定向控制( Field Oriented Control, FOC)表示这样一种方法:将其中一个磁通(转子、定子或气隙)视为所有其他量的参考坐标系,其目的是将定子电流解耦为用于产生转矩的分量和用于产生磁通的分量。这种解耦保证了复...原创 2019-11-23 14:39:10 · 12088 阅读 · 1 评论 -
STM32 电机教程 15 - BLDC 速度环内嵌电流环
前言无刷直流 (Brushless Direct Current, BLDC)电机是一种正快速普及的电机类型,它可在家用电器、汽车、航空航天、消费品、医疗、工业自动化设备和仪器等行业中使用。正如名称指出的那样,BLDC 电机不用电刷来换向,而是使用电子换向。BLDC 电机和有刷直流电机以及感应电机相比,有许多优点。其中包括:• 更好的转速-转矩特性• 快速动态响应• 高效率• ...原创 2019-11-23 08:03:59 · 10976 阅读 · 1 评论 -
STM32 电机教程 14 - BLDC 电机速度闭环控制
前言无刷直流 (Brushless Direct Current, BLDC)电机是一种正快速普及的电机类型,它可在家用电器、汽车、航空航天、消费品、医疗、工业自动化设备和仪器等行业中使用。正如名称指出的那样,BLDC 电机不用电刷来换向,而是使用电子换向。BLDC 电机和有刷直流电机以及感应电机相比,有许多优点。其中包括:• 更好的转速-转矩特性• 快速动态响应• 高效率• ...原创 2019-11-10 19:12:40 · 18518 阅读 · 4 评论 -
STM32 电机教程 13 - BLDC 电机转速计算
前言无刷直流 (Brushless Direct Current, BLDC)电机是一种正快速普及的电机类型,它可在家用电器、汽车、航空航天、消费品、医疗、工业自动化设备和仪器等行业中使用。正如名称指出的那样,BLDC 电机不用电刷来换向,而是使用电子换向。BLDC 电机和有刷直流电机以及感应电机相比,有许多优点。其中包括:• 更好的转速-转矩特性• 快速动态响应• 高效率• ...原创 2019-11-10 16:20:16 · 15967 阅读 · 6 评论 -
STM32 电机教程 12 - BLDC 闭环电流控制
前言无刷直流 (Brushless Direct Current, BLDC)电机是一种正快速普及的电机类型,它可在家用电器、汽车、航空航天、消费品、医疗、工业自动化设备和仪器等行业中使用。正如名称指出的那样,BLDC 电机不用电刷来换向,而是使用电子换向。BLDC 电机和有刷直流电机以及感应电机相比,有许多优点。其中包括:• 更好的转速-转矩特性• 快速动态响应• 高效率• ...原创 2019-11-09 22:17:32 · 14704 阅读 · 2 评论 -
STM32 电机教程 11 - BLDC 6 步方波开环速度控制
前言无刷直流 (Brushless Direct Current, BLDC)电机是一种正快速普及的电机类型,它可在家用电器、汽车、航空航天、消费品、医疗、工业自动化设备和仪器等行业中使用。正如名称指出的那样,BLDC 电机不用电刷来换向,而是使用电子换向。BLDC 电机和有刷直流电机以及感应电机相比,有许多优点。其中包括:• 更好的转速-转矩特性• 快速动态响应• 高效率• ...原创 2019-12-16 14:06:14 · 14587 阅读 · 8 评论 -
STM32 电机教程 10 - BLDC 6 步方波控制
前言 无刷直流 (Brushless Direct Current, BLDC)电机是一种正快速普及的电机类型,它可在家用电器、汽车、航空航天、消费品、医疗、工业自动化设备和仪器等行业中使用。正如名称指出的那样,BLDC 电机不用电刷来换向,而是使用电子换向。BLDC 电机和有刷直流电机以及感应电机相比,有许多优点。其中包括:• 更好的转速-转矩特性• 快速动态响应• 高...原创 2019-11-03 22:04:40 · 28699 阅读 · 9 评论 -
STM32 电机教程 9 - BLDC电机基础
本节内容整理自《无刷直流( BLDC)电机基础》( MicroChip 公司,编号 AN885)和《直流无刷电机的原理及其控制》( infineon 公司)前言无刷直流 (Brushless Direct Current, BLDC)电机是一种正快速普及的电机类型,它可在家用电器、汽车、航空航天、消费品、医疗、工业自动化设备和仪器等行业中使用。正如名称指出的那样,BLDC 电机不用电刷来换...原创 2019-11-03 18:08:53 · 21507 阅读 · 8 评论 -
STM32 电机教程 8 - 步进电机开环电流控制
前言 上一讲我们已成功实现基于STM32定时器的步进电机开环速度控制,这一节将介绍步时电机的开环电流控制,步进电机内阻较大,在电机停机或堵转时其电流可近视为 I = U/R。其中R是常量,控制U就可以控制步时电机的最大电流I,也就控制了步进电机的最大输出力。 本节演示步进电机实物图如下,因没有找到电机的详细参数,只能从型号中大致猜测一些(电机工作电压4V),结合万...原创 2019-11-02 18:25:51 · 7502 阅读 · 0 评论 -
STM32 电机教程 7 - 步进电机开环速度控制
前言 上一讲我们已成功实现对步进电机的正反转动控制,并简单的通过调节节拍间的延时时间实现了简单的转速控制(开环),这一节将继续给大学介绍在STM32中通过定时器方式来实现节拍间的精确延时操作,并通时调节定时器定时中断产生的时间来实现对步进电机的开环速度控制。 本节演示步进电机实物图如下,因没有找到电机的详细参数,只能从型号中大致猜测一些(电机工作电压4V),结合万...原创 2019-11-02 15:19:47 · 5658 阅读 · 0 评论 -
STM32 电机教程 6 - 步进电机转动控制
前言 上一讲给大家介绍了步进电机的基础知识,相信大家对步进电机的基本工作原理有了一定的了解(如果没看上一节内容,可以先看一下,https://blog.youkuaiyun.com/zhanglifu3601881/article/details/102844594或学习下面网页的内容:https://www.orientalmotor.com.cn/web_seminar/stkiso2-...原创 2019-11-01 11:17:16 · 19036 阅读 · 6 评论 -
STM32 电机教程 5 - 步进电机基础知识介绍
前言步进电机是一种专门用于速度及位置精确控制的特种电机,它旋转是以固定的角度〈俗称步距角〉一步一步运行的,故称为步进电机。 步进电机有反应式 (VR)、永磁式(PM)、混合式(HB)三种类型。混合式步进电机将前两类步进电机的优点综合于一身。混合式步进电机根据线圈极数可分为 两相、三相、五相步进电机。两相混合式步进电机目前应用最为广泛。常见的两相混合式步进电机的定子...原创 2019-10-31 19:58:25 · 5058 阅读 · 0 评论 -
STM32 电机教程 4 - 直流有刷电机闭环电流控制
前言 有刷电机是大家最早接触的一类电机,中学时物理课堂上介绍电动机也是以它为模型来展示的。有刷电机的主要结构就是定子+转子+电刷,通过旋转磁场获得转动力矩,从而输出动能。电刷与换向器不断接触摩擦,在转动中起到导电和换相作用。有刷电机采用机械换向,磁极不动,线圈旋转。电机工作时,线圈和换向器旋转,磁钢和碳刷不转,线圈电流方向的交替变化是随电机转动的换相器和电刷来完...原创 2019-10-27 18:55:13 · 22555 阅读 · 2 评论 -
STM32 电机教程 3 - 直流有刷电机开环速度控制
前言 有刷电机是大家最早接触的一类电机,中学时物理课堂上介绍电动机也是以它为模型来展示的。有刷电机的主要结构就是定子+转子+电刷,通过旋转磁场获得转动力矩,从而输出动能。电刷与换向器不断接触摩擦,在转动中起到导电和换相作用。有刷电机采用机械换向,磁极不动,线圈旋转。电机工作时,线圈和换向器旋转,磁钢和碳刷不转,线圈电流方向的交替变化是随电机转动的换相器和电刷来完...原创 2019-10-27 18:53:23 · 9909 阅读 · 0 评论 -
STM32 电机教程 2 - 直流有刷电机转动控制
前言 有刷电机是大家最早接触的一类电机,中学时物理课堂上介绍电动机也是以它为模型来展示的。有刷电机的主要结构就是定子+转子+电刷,通过旋转磁场获得转动力矩,从而输出动能。电刷与换向器不断接触摩擦,在转动中起到导电和换相作用。有刷电机采用机械换向,磁极不动,线圈旋转。电机工作时,线圈和换向器旋转,磁钢和碳刷不转,线圈电流方向的交替变化是随电机转动的换相器和电刷来完...原创 2019-10-27 18:50:38 · 16425 阅读 · 2 评论 -
stm32 常见错误及原因【持续更新】
stm32 开发中,经常会出现一些错误,下面总结一些常见错误及可能原因:1,Default_Handler出一这个错误 最常见的原因是 开启了中断,但没有对应的中断响应函数2,HardFault_Handler,这个错出现在原因最多,用mdk工具调试时可以通中Peripherals-->Core Peripherals-->Fault Reports 来查看具体的错误类型...原创 2019-06-24 14:59:19 · 12045 阅读 · 0 评论 -
STM32 进阶教程 4 - 软件实现高精度延时 2
前言软件工程师在在实际项目开发过程中,软件延时想必或多或少都有接触过,诸如delay_s(x); delay_ms(x);delay_us(x)等类型的延时函数大家也一定见过或自已曾经实现过,本节给大家介绍一种在STM32 MCU平台上实现高精度(小于1us)软件延时的方法。本节将接着上一讲 “STM32 进阶教程 3 - 软件实现高精度延时 1” 继续介绍的高精度度软件延时的实现与精度提高...原创 2019-06-24 15:39:04 · 1982 阅读 · 0 评论 -
STM32 进阶教程 6 - 汇编与C混合编程
前言在嵌入式开发过程中,有时候为了追求代码性能与效率不得不采用汇编语言来编写代码,但是汇编代码在阅读时表现不如C语言友好,本节给大家介绍一种新的方法,关键代码用汇编语言时行实现,然后用C语言时行接封装,用C语言与汇编语言混合编程的方式,在实现代码性能与运行效率的同时,又较方便阅读与理解决代码逻辑。本节将以STM32 MCU平台作为展示,教大家如何实现编码与C混合编程,本节实现方式是在《ST...原创 2019-07-06 16:59:51 · 6344 阅读 · 0 评论 -
STM32 基础系列教程 6 - PWM
前言学习stm32 基本定时器的使用,用基本定时器产生定时PWM, 来控制LED,通过并控制PWM波的占空比,实现呼吸灯效果示例详解基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是STM32F103c8t6, 使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。本示例所用的最小系统板原理图:...原创 2019-04-02 20:30:14 · 2147 阅读 · 2 评论 -
STM32 进阶教程 11 - RAM中运行程序
前言上一讲我们讲到stm32可以将代码直接下载到RAM中时行程序调试,同时可以有效避开STM32 Flash 擦写次数有限问题,其实除了仿真调试时将程序设置在RAM中可以解决FLASH擦写次数问题外,如果程序实际运行时能直接在RAM中运行,其代码的运行效率也会有一定的提高,那么怎么实现实际运行时让程序在RAM中运行呢,本节将带领大家来实现这一操作。示例详解基于硬件平台: STM32F1...原创 2019-07-07 22:53:26 · 21679 阅读 · 5 评论 -
STM32 进阶教程 10 - RAM中调试程序
前言在stm32开发过程中,程序调试是一个比较耗时且又重要的问题,特别是在固件代码达到一定的复杂度后,程序下载过程就一个比较耗时过程,同时STM32芯片有FLASH烧写次数有限,像103系列手册中标的是10000次,但在030系列MCU中才1000次,如果调试时可以将程序直接下载到RAM中并在RAM中运行(前题是有足够大的RAM可用)那么程序下载时间将有明显减少,同时Flash的使用寿命也得以...原创 2019-07-07 21:35:30 · 3451 阅读 · 3 评论 -
STM32 进阶教程 9 - 芯片维一码(UID)读取
前言在嵌入式设备开发过程中有时会需要为设备设置唯一的ID用以标识设备唯一,比如要求同一总线上的所有设备ID不能重复,要求设备具体唯一的MAC地址等等。其实STM32的及其它类型的MCU如ATMEL,GD等公司的芯片都自带有唯一序列码,在设备开发时可以用这个芯片唯一码(UID)来标志设备的唯一。本节以stm32为例,介绍如何读取芯片的唯一码(UID)并用它产生其它格式的唯一码。示例详解...原创 2019-07-07 16:14:02 · 10621 阅读 · 2 评论 -
STM32 进阶教程 1 - micropython 移植
前言Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。具有如下特点:1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。2.易于阅读:Python代码定义的更清晰。3.易于维护:Python的成功在于它的源代码是相当容易维护的。4.一个...原创 2019-06-14 19:01:21 · 28829 阅读 · 8 评论 -
STM32 电机教程 0 - MotorControl Workbench下载与安装
前言STM32微控制器提供了行业标准Arm®Cortex®-M核心运行矢量控制或FOC模式的性能,广泛应用于空调、家用电器、无人机、建筑和工业自动化、医疗和电动自行车应用的高性能驱动器。STM32 MCSDK(电机控制软件开发工具包)固件(X-CUBE-MCSDK和X-CUBE-MCSDK- ful)包括永磁同步电机(PMSM)固件库(FOC control)和STM32电机控制工作台...原创 2019-06-19 11:16:56 · 26052 阅读 · 11 评论 -
STM32 usb 设备实现自动重枚举
在开发USB设备时可能会经常遇到烧录程序后要重新拔插USB接口才能使USB设备正常工作,原因是因为重新烧录后,PC没有对USB设备进行重枚举,导致无法正常工作,解决方法很简单,我们只要在程序启动后第一时间对USB接口的DP引脚进行一下拉低操作即可(模拟一下拔过程),当程序完成USB接口初始化后,相当于一直插入操作,这样PC就会对设备进行重枚举,设备就可以正常操作了:例如可以有如下代码:...原创 2019-05-28 19:26:28 · 6471 阅读 · 3 评论 -
STM32 进阶教程 7 - C与C++混合编程
前言在嵌入式开发过程中经常会用到第三个芯片/设备,这些第三方的芯片提供的DEMO程序或驱动程序有时候是C++,如果先前的系统用C语言写的就会出现点问题,往往需先将C++的驱动程序自已手动改成C语言再用,本节给大家介给一下如何在KEL MDK环境中实现C与C++混合编程。本节将在《STM32 进阶教程 4 - 软件实现高精度延时 2》基础上将Delay.c变成C++实现的Delay.cpp编代...原创 2019-07-06 19:15:42 · 8472 阅读 · 1 评论 -
STM32 进阶教程 8 - 位带操作
前言有过51单片机开发经历的朋友应该都对51的IO口或一些特殊寄存器可以直接按位操作的方式不陌生吧,那么在stm32中有没有类似的操作呢,答案是肯定的,本节将给大家介绍如何在STM32中实现位带操作。在《ARM Cortex-M3权为指南》中的第87页对位带操作如下描述:位带操作支持了位带操作后,可以使用普通的加载/存储指令来对单一的比特进行读写。在 CM3中,有两个区中实现了位带...原创 2019-07-06 21:47:25 · 2188 阅读 · 0 评论 -
一起学nRF51xx 22 - 实现一个具体SVC调用功能的demo
前言上一节《一起学nRF51xx 21 - 蓝牙项目工程的初始化流程解读》讲到nordic的蓝牙协议栈是通过SVC来实现APP与协议栈之间通接口调用的,那么如何来实现一个具体SVC调用功能的程序呢,本节将带大家解决这个问题。示例详解基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是STM32F103c8t6, 使用stm32cubemx 工具自动产生的配置工程,...原创 2019-09-22 21:23:26 · 1074 阅读 · 2 评论 -
stm32 usart 单线半双工串口 DMA发送 最后一个字节发不出来问题
最近遇到一个小问题,感觉很有意思便记下来分享一下 ,顺便也为日后类似的问题提供点思路:使用stm32串口发送数据 ,串口是单线半双工模式,要求数据发送前串口变成发送模式,发送完后立即变回接收模式,发送操作使用DMA来发送,程序开了串口中断和DMA中断,串口中断主要是用于接收与解析数据,DMA中断是想用于操作串口收发模式切换,发现DMA发送时最后一个数据老是发不出来。经过分析定位发现是因为D...原创 2019-09-18 15:37:31 · 4223 阅读 · 1 评论 -
STM32 进阶教程 19 - IQmath数学库的使用
前言STM32 M3 系列是不带浮点运算单元的,小数运算都是采用定点转浮点试式实现的,本节给大家介绍一个很好用的定点转浮点数学运算库,IQmath是德州仪器 (TI) 的一个高度优化的高精度数学函数集合,使 C/C++ 编程人员可以将浮点算法无缝植入定点代码中。这些例程通常用于计算密集型实时应用,最佳执行速度和高精确度是这些应用的关键。通过使用这些例程,您可以获得比使用标准 ANSIC 语言编...原创 2019-07-28 18:05:00 · 27862 阅读 · 7 评论