stm32
文章平均质量分 77
树懒的聪明
遥远的恒心!
展开
-
STM32F407通过定时器输出多路PWM波控制电机做正反转的正弦运动2
承接上一篇,上一篇主要说了我的思路,还有正弦速度函数、系统定时器函数,本篇主要是改变定时器PWM波占空比和电机正反转。电机驱动器的接线图和驱动器控制信号输入端口如下所示,从图中可得,除必须的使能、刹车信号外,对运动控制起主要作用的是SV和FR端口,SV端口能够输入模拟信号或者PWM波信号作控制信号,选择PWM波作输入信号的原因是stm32的定时器资源丰富,有充足的输出比较通道作PW...转载 2021-10-29 14:46:11 · 1992 阅读 · 1 评论 -
STM32学习笔记——DAC配置(转)
STM32F103VCT6自带两个12位DAC,DAC的转换速度一直没有查到,网上有人说是1MHZ的频率,那就是1us了。ADC的转换时间在56MHZ工作频率下为1us,在72MHZ工作频率下为1.17us。如果AD和DA有对称关系的话,那么很可能跟ADC的时间相同。(仅作分析用!)DAC于我,有两个用途:输出波形和输出固定电压。先来说说前者的配置。第一个参数:触发方式,DAC_InitStructure.DAC_Trigger。可选的外部触发源一共有八个。六个是定时器触...转载 2020-06-18 11:45:53 · 1684 阅读 · 0 评论 -
while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET)
芯片:STM32F030C8 调试环境:Keil uVision5问题:调试SPI读写FLASH芯片W25Q32时,程序死在while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET)处,不管是在线仿真还是程序下载到芯片内都不行,将此语句改成直接寄存器操作也不行。解决的方案:按论坛的方法,将该语句替换为while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY) == SET);即判断SPI忙信号,转载 2020-06-15 08:12:41 · 7695 阅读 · 2 评论 -
VS2010静态编译生成.exe可执行文件
VS2010静态编译生成的.exe可执行文件,可以免安装在其他电脑直接运行静态编译:就是在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖动态链接库。编译方式:第1种:设置:1、项目->配置属性->常规->MFC的使用:在静态库中使用MFC2、项目 ->配...转载 2019-11-27 20:07:28 · 422 阅读 · 0 评论 -
Keil5可以打开Keil4
相信初次使用Keil MDK Version 5的人会发现,以前用Keil4建立的项目打不开了,本经验介绍如何让Keil5可以打开Keil4的项目。首先是到Keil官网下载最新版本的MDK Core;接着安装MDK Core,按照默认安装就可以;在MDK Core安装完成后, Pack Installer会自动运行, 它允许用户添加Software Packs. 接着你可以安装...原创 2019-04-26 09:57:43 · 4153 阅读 · 0 评论 -
STM32学习笔记6(TIM模块定时器)
TIM模块定时器向上溢出 & 输出比较首先我们必须肯定ST公司的实力,也承认STM32的确是一款非常不错的Cortex-M3核单片机,但是,他的手册实在是让人觉得无法理解,尤其是其中的TIM模块,没有条理可言,看了两天几乎还是不知所云,让人很是郁闷。同时配套的固件库的说明也很难和手册上的寄存器对应起来,研究起来非常费劲!功能强大倒是真的,但至少也应该配套一个让人看的明白的说明吧~~两...转载 2019-07-08 20:41:08 · 766 阅读 · 0 评论 -
高级定时器/TIM1/TIM8 定时时间不准的问
配置定时器遇到的问题举例1:/*TIM1时钟配置*/TIM_TimeBaseStructure.TIM_Prescaler = 2; //预分频(时钟分频)72M/(2+1)=24MTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数TIM_TimeBaseStructure.TIM_Pe...转载 2019-07-08 20:47:27 · 822 阅读 · 0 评论 -
stm32 定时器TIM时钟步骤
1)TIM3时钟使能 。RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIMx, ENABLE); //时钟使能2) 初始化定时器参数,设置自动重装值, 分频系数,计数方式等。定时器的初始化函数TIM_TimeBaseInitvoidTIM_TimeBaseInit(TIM_TypeDef*TIMx,TIM_TimeBaseInitTypeDef*...转载 2019-07-08 20:48:16 · 3259 阅读 · 0 评论 -
STM32将IAP和APP一次性下载进MCU的方法
一、Keil编译生成bin文件1.在Keil界面点击魔法棒按键(Options for traget)2.点击User选项卡。3.将After Build/Rebuild 下的 Run #1打钩,后面写入 fromelf.exe --bin -o "$L@L.bin" "#L"4.重新编译工程,在输出的文件夹里将有一个和工程名字相同的.bin文件。二、合并.bin文件...转载 2019-03-26 12:51:54 · 344 阅读 · 0 评论 -
USART中的SART_IT_RXNE,USART_IT_TC,USART_IT_TXE
USART中的SART_IT_RXNE,USART_IT_TC,USART_IT_TXETXE--写寄存器DR清零RXNE--读寄存器DR清零,也可软件手动清零TC-- 读/写寄存器DR清零,也可软件手动清零在USART的发送端有2个寄存器,一个是程序可以看到的USART_DR寄存器,另一个是程序看不到的移位寄存器,对应USART数据发送有两个标志,一个是TXE=发送数据寄存器空,另...转载 2019-03-25 19:18:35 · 1575 阅读 · 0 评论 -
电源符号:VCC、VDD、VEE、VSS、VBAT各表示什么意思?
电路设计以及PCB制作中,经常碰见电源符号:VCC、VDD、VEE、VSS、VBAT,他们具有什么样的关系那? 一、解释 (1)VCC:C=circuit 表示电路的意思, 即接入电路的电压 (2)VDD:D=device 表示器件的意思, 即器件内部的工作电压; (3)VSS:S=series 表示公共连接的意思,通常指电路公共接地端电压(4)VEE:负...转载 2019-03-25 19:13:37 · 2080 阅读 · 0 评论 -
IAR建立stm32工程
版本1:stm32是一个当下非常流行的微控制器,很多人都加入了学习stm32的行列中,常用的stm32编译器有IAR和mdk两种,接下来是利用stm32固件库3.5在IAR下的建立的工程模板历程: 1、在常用的文件夹下新建立一个文件夹,根据个人喜好,分别建立如下几个文件夹,用于分别存放固件库中的文件和用户自己的文件 2、将固件库E:\STM32\stm32固件库3.5\...转载 2019-03-25 19:09:48 · 291 阅读 · 0 评论 -
IAR工程下.eww、.ewp、.ewd、.map、.hex、.bin、.browse、.ewt、.o文件的作用!
IAR工程下.eww、.ewp、.ewd、.map、.hex、.bin、.browse、.ewt、.o文件的作用!1.eww:工作空间文件(不可删除)这个文件是多个工程的索引文件,也是我们打开IAR工程的文件。2.ewp:工程文件(不可删除)新建工程之后产生的文件,在同一个工作空间下建立多个工程,就会有多个ewp文件。3.ewd:工程调试器配置文件(不可删除)他配合IAR系统编译...转载 2019-03-25 18:59:09 · 1341 阅读 · 1 评论 -
STM32F103 CAN通信的滤波器设置
刚开始接触CAN通信,测试过收发后,还需要使用标识符过滤来实现固定节点的数据收发。记录一下“屏蔽位模式”下滤波参数的设置。发送代码如下://can发送一组数据(固定格式:ID为0X123,标准帧,数据帧) //len:数据长度(最大为8) //msg:数据指针,最大为8个字节.//返回值:0,成功;// 其他,失败;u8 Can_Send_Msg(u8*...转载 2019-03-25 18:39:04 · 1062 阅读 · 0 评论 -
pwm互补输出 死区设置
void TIM8_PWM_Init(u16 arr,u16 psc){ GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; NVIC_InitTypeDef N...转载 2019-07-08 20:49:31 · 3487 阅读 · 1 评论 -
PWM死区(Dead Zone)的作用和意义
PWM输出时的Dead Zone(死区)作用是在电平翻转时插入一个时间间隔,避免关闭前一个设备和打开后一个设备时因为开关速度的问题出现同时开启状态而增加负荷的情况(在没有彻底关闭前打开了后一个设备),尤其是电流过大时容易造成短路等损坏设备,如:互补PWM波输出在逆变器(直流转交流)中的应用。PWM(Pulse Width Modulation),即脉宽调制,简单来说就是一些矩形脉...转载 2019-07-08 20:50:19 · 2000 阅读 · 0 评论 -
stm32f030移植到stm32f072
1、检测固件库包是否匹配,老版本的固件库包不支持stm32f072的一些配置。2、基本的硬件接口修改,相应的外设配置。3、添加对应型号的启动文件,并且设置为始终编译。(程序在初始化阶段进入hardfault,是由于编译的启动文件不匹配,有时也得注意启动文件的版本,一次我的启动文件为startup_stm32f0xx.s,我想这是适合stm32f072启动编译的,然而程序一直在初...转载 2019-07-31 19:33:10 · 1784 阅读 · 1 评论 -
STM32使用外部16MHZ晶振修改程序点
做小封装产品设计的朋友或许知道3225-4PIN的晶振,为何8MHZ晶振批量价格要到2元一片,而16MHZ晶振只需要0.4元甚至更少。究其原因是因为3225封装的晶振目前全球最低频率一般为8MHZ,而国内8MHZ达不到精度指标,所以市场上的8MHZ晶振一般为进口晶振,因此成本被垄断。 图13225封装晶振 STM32单片机学习者一开始用的晶振一般是2PIN的8MHZ晶...转载 2019-07-31 19:28:49 · 523 阅读 · 0 评论 -
STM32F030_RTC详细配置说明
STM32F030_RTC详细配置说明今天总结RTC(Real Time Clock)实时时钟相关的知识。在进行RTC的讲解前,我先对BKP进行一个简单的讲解。STM32的RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待机模式唤醒后, RTC的设置和时间维持不变。STM32F0的RTC模块和F3的RTC模块最大区别在于F0模块中有“DATE”和“TIME...转载 2019-07-11 00:02:53 · 1838 阅读 · 0 评论 -
STM32F407通过定时器输出多路PWM波控制电机做正反转的正弦运动
第一次写博客,难免会有些乱,大家见谅。实验室最近在做一个足式机器人项目,我主要负责基于STM32F407ZGT6芯片控制板机器人的运动控制系统设计,打算用博客的形式记录自己的收获,机器人自下向上的总体架构是:机器人机械结构->直流电机->电机驱动器->STM32F407控制板。项目处于前期程序模块设计阶段,首先需要验证电机的运动性能,用周期性的运动更容易获得结果,所以...转载 2019-07-04 18:15:39 · 3378 阅读 · 0 评论 -
STM32 TIM输出比较的三种模式
STM32开发板学习日记-[4]TIM输出比较的三种模式TIMx的输出比较模式是用来控制一个输出波形或者指示何时一段给定的的时间已经到时。当计数器与捕获/比较寄存器的内容相同时,输出比较功能做如下操作:●将输出比较模式(TIMx_CCMRx寄存器中的OCxM位)和输出极性(TIMx_CCER寄存器中的CCxP位)定义的值输出到对应的管脚上。在比较匹配时,输出管脚可以保持它的电平(OCxM...转载 2019-07-04 18:14:48 · 5468 阅读 · 1 评论 -
STM32如何实现可调频率、占空比的PWM波形,且可指定输出脉冲个数?
标签: 杂谈 分类:stm32 使用两个TIM定时器:一个输出可调频率、占空比的PWM,一个对输出PWM脉冲计数(计时)。1.门控方式能实现,但需要复杂的配置和计算,不推荐。2.脉冲计数是比较实际,也是比较简单的方式;对输出PWM脉冲计数(计时)方法有多种:1.IO中断计数,或同步定时中断计数:用另外一个定时器,按照相同频率中断计数(类似IO...转载 2019-07-04 18:10:01 · 5554 阅读 · 0 评论 -
STM32定时器输出PWM频率和步进电机控制速度计算
1、STM32F4系列定时器输出PWM频率计算第一步,了解定时器的时钟多少: 我们知道AHP总线是168Mhz的频率,而APB1和APB2都是挂在AHP总线上的。(1)高级定时器timer1, timer8以及通用定时器timer9, timer10, timer11的时钟来源是APB2总线(2)通用定时器timer2~timer5,通用定时器timer12~timer14以及基...转载 2019-07-04 18:08:53 · 4377 阅读 · 1 评论 -
第十四章 PWM输出实验
【ALIENTEK 战舰STM32开发板例程系列连载+教学】第十四章 PWM输出实验 [复制链接] 正点原子 543 主题 10万 帖子 32 精华 管理员 积分 142280 金钱 ...转载 2019-07-04 18:05:33 · 634 阅读 · 0 评论 -
利用高级定时器产生6路互补PWM波形输出
STM32的MCU产品自带定时器资源十分丰富,既有专门用于电机控制的高级定时器(TIMER1/TIMER8),又有仅定时用的基本定时器(TIMER6/TIMER7) 和通用定时器(TIMER2/3/4/5/14/15/16/17) ,还有2个看门狗定时器和一个Systick定时器,真是十分强大哈。 这一篇文章就来讲解一下利用高级定时器TIMER1产生6路互补PWM波形输出。第一部分讲...转载 2019-07-04 17:59:31 · 4341 阅读 · 0 评论 -
STM32之PWM波形输出配置总结
一. TIMER分类:STM32中一共有11个定时器,其中TIM6、TIM7是基本定时器;TIM2、TIM3、TIM4、TIM5是通用定时器;TIM1和TIM8是高级定时器,以及2个看门狗定时器和1个系统嘀嗒定时器。其中系统嘀嗒定时器是前文中所描述的SysTick。 定时器 计数器分辨率 计数器类型 预分频系数 ...转载 2019-07-04 17:49:25 · 618 阅读 · 0 评论 -
stm32 刹车
摘自:http://blog.csdn.net/ylgm44/article/details/39370053需求:1. PWM互补输出2. 过流保护,产生过流,立即停止pwm输出,并保证按照互补方式停止pwm输出。3. 单周期保护,产生过流,当前脉冲周期停止输出,下一个脉冲周期自动回复输出,停止输出按照互补方式停止。一路pwm的保护只能采用2/3中的一种。过程...转载 2019-07-04 17:42:45 · 3864 阅读 · 0 评论 -
PWM互补输出
标签: pwm互补输出 stm32高级定时器 stm32 带死区pwm输出 一,高级定时器功能框图高级控制定时器(TIM1和TIM8)和通用定时器在基本定时器的基础上引入了外部引脚,可以实现输入捕获和输出比较功能。高级控制定时器比通用定时器增加了可编程死区互补输出、重复计数器、带刹车(断路)功能,这些功能都...转载 2019-07-04 10:13:30 · 16982 阅读 · 5 评论 -
STM32F4 RTC的使用
比较F1的片子对于F4的RTC来说有很大提升,F4的RTC提供了日历时钟和两个可编程闹钟中断,一个周期性可编程唤醒标志。这样很方便设置系统时间,并不会像F1的RTC那样要自己计算年月日时分秒。F4的RTC是一个独立的BCD定时计数器,系统可以自动将月份天数补偿为28、29(闰年)、30、31天。并且还可以进行夏令时补偿。由此可见RTC,下面贴出代码方便以后查看(这里特别提一下RTC_Alarm...转载 2019-03-15 13:48:14 · 2892 阅读 · 0 评论 -
startup_stm32f10x_xx.s 启动代码文件选择
整体感觉stm32给的库文件太琐碎了,正如它的芯片型号一样繁多,例如启动文件:网上查到的各个文件的解释是:startup_stm32f10x_cl.s 互联型的器件,STM32F105xx,STM32F107xxstartup_stm32f10x_hd.s 大容量的STM32F101xx,STM32F102xx,STM32F103xxstartup_stm32f10x_hd转载 2016-09-17 15:25:14 · 591 阅读 · 0 评论 -
stm32笔记:Systick系统滴答定时器
Systick :系统心跳定时器,提供系统节拍 裸机程序中可作为独立的延时定时器用途:1.产生操作系统的时钟节拍2.便于不同处理器之间程序移植SysTick定时器被捆绑在NVIC中,异常号153.作为一个闹铃测量时间用于测量时间, 但当处理器在调试期间被喊停(halt)时,则SysTick定时器亦将暂停运作它有四个寄存器S转载 2016-09-17 15:24:18 · 868 阅读 · 0 评论 -
stm32学习笔记 系统时钟
在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。①、HSI是高速内部时钟,RC振荡器,频率为8MHz。②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。③、LSI是低速内部时钟,RC振荡器,频率为40kHz。④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。⑤、PLL为锁相环倍频输出,其时钟输转载 2016-09-17 15:23:03 · 235 阅读 · 0 评论 -
STM32F100X RCC_APB2Periph_AFIO--复用IO时钟的使用
为了优化64脚或100 脚封装的外设数目,可以把一些复用功能重新映射到其他引脚上。设置复用重映射和调试I/O 配置寄存器(AFIO_MAPR) 实现引脚的重新映射。这时,复用功能不再映射到它们的原始分配上。 需要用到外设的重映射功能时才需要使能AFIO的时钟外部中断(EXTI)中与AFIO有关的寄存器是AFIO-EXTICR1、2、3,它们是用来选择EXTIx外部中转载 2016-09-17 15:22:04 · 520 阅读 · 0 评论 -
32
第一种 USART_IT_TXE(发送寄存器空中断) 顾名思义,一旦寄存器空了 就会中断一次,为了防止一直进该中断或者不断往该寄存器装载数据,在不装载数据时,一般需要做如下操作:1.初始化的时候,屏蔽该中断USART_ITConfig(USARTx, USART_IT_TXE, DISABLE);2.要发送数据前,使能该中断USART_ITConfig(USARTx, USAR转载 2016-08-18 18:52:45 · 873 阅读 · 0 评论 -
stm32的
By wit_yuan 一般来说,串口的发送中断传输数据,对于我目前的应用来说,应用的要求并不是很高,因此,因此就一直没有对其进行一个比较好的实验与认识。然而,在一次串口程序升级(IAP)升级实验中,发现有人使用了这个发送中断方式进行的,所以特别的进行了一个个步骤的实验来进一步知道其运行机理。 首先,串口发送数据,可以使用的方式有:1、 发送一个数转载 2016-08-18 18:51:05 · 228 阅读 · 0 评论 -
STM32中发送中断标志位
数据手册中对此标志位的解释:Bit 7 TXE : Transmit data register emptyThis bit is set by hardware when the content of the TDR register has been transferred into the shift register. An interrupt is generated i转载 2016-08-18 18:50:17 · 4078 阅读 · 0 评论 -
32
这次讲讲利用串口收发中断来进行串口通讯。STM32 上为每个串口分配了一个中断。也就是说无论是发送完成还是收到数据或是数据溢出都产生同一个中断。程序需在中断处理函数中读取状态寄存器(USART_SR)来判断当前的是什么中断。下面的中断映像图给出了这些中断源是如何汇合成最终的中断信号的。图中也给出了如何控制每一个单独的中断源是否起作用。另外,Cortex-M3 内核中还有个N转载 2016-08-18 18:49:23 · 271 阅读 · 0 评论 -
STM32根据库建立自己的工程
■ 利用STM32的官方库在Keil uVision 4中新建一个工程的步骤: 一. 新建工程时的软件操作,工程配置方法: 1. 点击菜单栏的Project → New uVision Project,新建一个工程文件,取名,设置好保存路径后,点击“保存”即可。 2. 接着弹出一个对话框,选择芯片型号,我们用的是ST公司的STM 32F转载 2016-08-16 19:12:13 · 337 阅读 · 0 评论 -
STM32调试大法 之 串口通讯
开发过程经常需要查看某些特定参数。通常的方法可以使用paintf进行打印输出,观察具体的变量值。STM32内部集成有USART的串口功能,可以通过串口直接输出到电脑(上位机)。使用非常方便,基本不需要不需要写代码,只要配置一下就可以使用。 简单设置就可以看到上面的效果 配置方法: 1、重定向printf的输出函数 int fputc(int ch,转载 2016-08-16 19:11:11 · 2522 阅读 · 0 评论 -
如何在KEIL中使用MicroLIB
MicroLIB在keil 建立ARM的工程时其中有一项是选 use MicroLIBmicrolib 是缺省 C 库的备选库。 它旨在与需要装入到极少量内存中的深层嵌入式应用程序配合使用。 这些应用程序不在操作系统中运行。microlib 进行了高度优化以使代码变得很小。 它的功能比缺省 C 库少,并且根本不具备某些 ISO C 特性。 某些库函数的运行速度也转载 2016-08-16 12:12:29 · 397 阅读 · 0 评论