stm32
文章平均质量分 77
IMXRT型Planck
正在学习的小白
展开
-
电机学习笔记 stm32编码器模式
M法这种方法是在一个固定的定时时间内(以秒为单位),统计这段时间的编码器脉冲数,计算速度值。设编码器单圈总脉冲数为 C,在时间 T0 内,统计到的编码器脉冲数为 M0,则转速 n 的计算公式为:公式中的编码器单圈总脉冲数 C 是常数,所以转速 n 跟 M0 成正比。这就使得在高速测量时 M0变大,可以获得较好的测量精度和平稳性,但是如果速度很低,低到每个 T0 内只有少数几个脉冲,此时算出的速度误差就会比较大,并且很不稳定。也有一些方法可以改善 M 法在低速测量的准确性,上一节提到的增量式编码原创 2021-07-01 23:08:10 · 2401 阅读 · 1 评论 -
【踩坑】 a value of type “int“ cannot be assigned to an entity of type “TaskHandle_t“
在freertos中创建了一个静态任务,发现代码报红编译过后错误,报main.c(185): error: #513: a value of type "int" cannot be assigned to an entity of type "TaskHandle_t"大概意思是不能转换为TaskHandle_t,不能返回啥的经过排查FreeRtos.h第777行代码#ifndef configSUPPORT_STATIC_ALLOCATION /* Defaults to 0 fo原创 2021-06-16 09:38:10 · 6662 阅读 · 1 评论 -
电机学习笔记 无刷电机控制6步换相
无刷电机一般是三相这里控制电机靠的是三相六臂全桥电路。注意不能同侧导通,那就短路了,整个控制过程就是通过霍尔传感器的状态,判断在那一个位置,后按电机旋转真值表来控制。使用 PWM 控制直流无刷电机的策略包括PWM-ON、ON-PWM、H_PWM-L_ON、H_ONL_PWM 和 H_PWM-L_PWM。这 5 种控制策略,均是电机处于 120° 运行方式下进行的这 5 种调制方式为:PWM-ON 型。在 120° 导通区间,各开关管前 60° 采用 PWM 调制,后 60° 则恒通。原创 2021-06-03 09:49:40 · 16319 阅读 · 12 评论 -
电机学习笔记 ADC dma 电流电压采集
分析在电机驱动电路中串入一个 0.02Ω、2W 的采样电阻,将电流信号转换成电压信号,再经过隔离运放放大 8 倍后差分输出,使用普通运放将差分输出转换成单端输出给 STM32 的 ADC 采样通道。从上图中我们可以知道是一个负反馈电路反馈:将输出信号的一·部分或全部通过反馈网络引回到输入端的过程反馈网络:一般是阻容元件看是否存在反馈:结构,输入端与输出端有没有一个反馈网络就是有没有阻容元件连接反馈的极性:采用瞬时极性法负反馈对放大倍数起到了限制作用,也增大了放大电路的稳定性,原创 2021-05-30 17:12:32 · 8103 阅读 · 2 评论 -
电机学习笔记 h桥与自举电路
H桥简介H桥是一个典型的直流电机控制电路注意不能同侧mos管导通,对角导通电机就开始转动这里我们先说mos管mos管mos管它分为N沟道和P沟道两类,其中每一类又可分为增强型和耗尽型两种以上是N沟道和P沟道MOS管的符号图,G:栅极;S:源极;D:漏极。N沟道的电源一般接在D,输出S,P沟道的电源一般接在S,输出D。增强耗尽接法基本一样。我们这里关注重点参数VDSS(耐压值)要看datasheet耐压值多少,VCC打八折RDS 焦耳j=i的平方*R 如果RDS比较小,发热量原创 2021-05-29 11:05:39 · 5615 阅读 · 0 评论 -
电机学习笔记 输出比较
一、输入比较简介输出比较就是通过定时器的外部引脚对外输出控制信号,有冻结、将通道 X(x=1,2,3,4)设置为匹配时输出有效电平、将通道 X 设置为匹配时输出无效电平、翻转、强制变为无效电平、强制变为有效电平、PWM1 和 PWM2 这八种模式,具体使用哪种模式由寄存器 CCMRx 的位 OCxM[2:0]配置。其中 PWM 模式是输出比较中的特例,使用的也最多当计数器 CNT 的值跟比较寄存器 CCR 的值相等的时候,输出参考信号 OCxREF 的信号的极性就会改变,其中 OCxREF=1(原创 2021-05-28 23:11:45 · 1148 阅读 · 0 评论 -
电机学习笔记 输入捕获
一、输入捕获简介输入捕获可以对输入的信号的上升沿,下降沿或者双边沿进行捕获,常用的有测量输入信号的脉宽和测量 PWM 输入信号的频率和占空比这两种。输入捕获的大概的原理就是,当捕获到信号的跳变沿的时候,把计数器 CNT 的值锁存到捕获寄存器 CCR 中,把前后两次捕获到的 CCR 寄存器中的值相减,就可以算出脉宽或者频率。如果捕获的脉宽的时间长度超过你的捕获定时器的周期,就会发生溢出,这个我们需要做额外的处理。输入捕获一般应用在两个方面,一个方面是脉冲跳变沿时间测量,另一方面是 PWM 输入测量原创 2021-05-28 19:26:31 · 3026 阅读 · 4 评论 -
电机学习笔记 pwm互补输出
一、互补输出简介定时器的PWM互补输出,用在驱动器、逆变器方面。主要是用在全桥MOS管的控制上。如下图,如果MOS管相同,PWM不反向的话,势必造成两个MOS都导通。相当于电源和地都直连死区时间另外,这里还涉及到一个概念,死区时间。由于两个MOS管的参数不一定完全相同,关断速度不一样,可能有那么几个us 或者MS 是上一个管马上要关闭,下一个已经打开了,造成了两个MOS都打开的短暂现象,所以一般需要加个死区时间。死区时间计算TIM_BDTRInitStructure.DeadTime =原创 2021-05-28 14:17:44 · 13362 阅读 · 0 评论 -
stm32 HAL经常用的
1.讀按鍵的狀態、int key_Read(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin) { if(HAL_GPIO_ReadPin(GPIOx,GPIO_Pin) == 0 ) { while(HAL_GPIO_ReadPin(GPIOx,GPIO_Pin) == 0); return 1; }else { return 0; }}2.串口收發注意使用串口中斷要__HAL_UART_ENABLE_IT(&hu原创 2021-04-18 22:41:08 · 474 阅读 · 0 评论 -
stm32 adc
adc工作方式1.查询模式(阻塞)2.中断模式3.DMA模式查询模式1.启动adc2.等待EOC标志位3.读寄存器值HAL_ADC_Start()HAL_ADC_Stop()HAL_ADC_PollForConversion(); //查询转换标志位HAL_ADC_GetValue()获取 ADC的值float getAdcValue(void) { HAL_ADC_Start(&hadc1); HAL_ADC_PollForConversion(&hadc原创 2021-02-12 15:04:03 · 158 阅读 · 0 评论 -
stm32 定时,互补输出,输入捕获,输出比较
Prescaler:定时器预分频器设置,时钟源经该预分频器才是定时器时钟,它设定 TIMx_PSC寄存器的值。可设置范围为 0 至 65535,实现 1 至 65536 分频。• CounterMode:定时器计数方式,可是在为向上计数、向下计数以及三种中心对齐模式。基本定时器只能是向上计数,即 TIMx_CNT 只能从 0 开始递增,并且无需初始化。• Period:定时器周期,实际就是设定自动重载寄存器的值,在事件生成时更新到影子寄存器。可设置范围为 0 至 65535。 • ClockDiv原创 2021-01-20 19:38:38 · 2216 阅读 · 0 评论 -
PID学习记录
pwmT为周期,Ton为导通时间,Toff为关断时间。Ton+Toff=T;输出电压Uout=(Ton/T)Upid1.PPout=KpEk2.IIout=Kp*Sk //[输出信号大小] 正比于 [过去总体偏差值]Iout:比例控制器的输出。Kp:增益系数。Sk:历史偏差之和即历史上的整体偏差情况如果都是不达标的,那么我积分控制器就会有一个正的输出量使得你输出继续增强;若你历史上整体偏差情况是超标的,那么我就输出一个负的输出量使你降低输出,甚至输出负值,即如果是温度控制系统,原创 2020-11-13 09:41:46 · 385 阅读 · 0 评论 -
Invalid ROM Table的解决方法
今天烧录stm32的时出现了Invalid ROM Table的问题,经过网上查询是频率不对的问题把超频了导致stm32被锁了,无法烧录出现Invalid ROM Table的问题。解决方法修改system_stm32f4xx.c,system_stm32f4xx.c里的ppl频率修改为正确的修改boot,这是网上的方法,我那个stm32是个小车,并没有boot与boot1引出,按住复位键使用STM32 ST-LINK Utility来擦除flash,在烧录,使用jlink解锁也可以。...原创 2020-09-20 15:03:16 · 1646 阅读 · 1 评论 -
stm32学习笔记 RTC
灰色部分为纽扣电池供电下的后备区域相应的寄存器的值也能保存,其他部分为其他供电默认是停止访问的如果要使用需要设置相关寄存器(1)RTC 备份寄存器的写访问:1)通过设置寄存器 RCC_APB1ENR 的 PWREN 位来打开电源接口时钟2)电源控制寄存器(PWR_CR)的 DBP 位来使能对 RTC 及 RTC 备份寄存器的访问。RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);//使能 PWR 时钟PWR_BackupAccessCmd(原创 2020-09-01 06:00:09 · 561 阅读 · 0 评论 -
stm32学习笔记 通用定时器
STM32F103C8T6处理器:高级定时器: TIM1三个通用定时器: TIM2,TIM3, TIM4没有基本定时器stm32f4有 14 个定时器(具体看手册)重点内容:1.基本定时和计数功能2.输出比较( PWM控制舵机和步进电机)3.输入捕获(测量波形周期,高电平时间)时钟树:因为系统初始化 SystemInit 函数里面已经初始化 APB1 的时钟为 4 分频,所以 APB1 的时钟为 42M,而从 STM32F4 的内部时钟树图(得知:当 APB1 的时钟分频数为 1原创 2020-09-01 03:51:27 · 274 阅读 · 0 评论 -
stm32学习笔记 DMA
DMA简单来说就是可以减轻CPU工作量通道的选择与你要用的外设有关例子:dma初始化void DMA_ConfigurAction(void) { RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2 ,ENABLE); //时钟使能 DMA_InitTypeDef DMA_InitStructure; DMA_InitStructure.DMA_PeripheralBaseAddr = 0x40013804; //填寄存器地址 // 寄存器地址原创 2020-08-25 18:49:34 · 194 阅读 · 0 评论 -
stm32学习笔记 PWR
PWRSTM32的工作电压(VDD)为2.0~3.6V。通过内置的电压调节器提供所需的1.8V电源。当主电源VDD掉电后,通过VBAτ脚为实时时钟(RTC)和备份寄存器提供电源。__WFI(); 为arm内核的指令PWR 函数PWR_DeInit 将外设 PWR 寄存器重设为缺省值PWR_BackupAccessCmd 使能或者失能 RTC 和后备寄存器访问PWR_PVDCmd 使能或者失能可编程电压探测器(PVD)PWR_PVDLevelConfig 设置 PVD 的探测电压阈值PW原创 2020-08-24 21:23:01 · 8118 阅读 · 0 评论 -
stm32学习笔记 串口
usart并行通信(有好多根线)和串口通信(一根线)同步通信:收发双方有clk同步信号线约定好的异步信号:只有一根线,没有clk防止信号紊乱1.数据位要确定,有无奇偶校验,停止位长度,波特率如果要通过串口要接pc机,需要rs232的电平转换芯片,usb为ttl转换芯片1.使能gpio2.复用3.USART_Init例子:#include "bsp_uart.h"#include "stdio.h"void Uart1_NVIC_init(void) { NVIC_Prio原创 2020-08-21 23:41:16 · 222 阅读 · 0 评论 -
stm32笔记 看门狗
独立看门狗 IWDGIWDG 使用lSI低速内部时钟寄存器IWDG_KR key 15:0软件必须间隔写入0xAAAA,否则看门狗复位写入0x5555 访问 IWDG_PR() 和 IWDG_RLR(重装载)写入0xCCCC 启动看门狗库函数IWDG_WriteAccessCmd 使能或者失能对寄存器 IWDG_PR 和 IWDG_RLR 的写操作IWDG_SetPrescaler 设置 IWDG 预分频值IWDG_SetReload 设置 IWDG 重装载值IWDG_ReloadC原创 2020-08-18 21:58:05 · 136 阅读 · 0 评论 -
stm32笔记 SysTick
STK寄存器 24位具体看手册STK_CTRL 控制第0位 设置为1使能第1位 设置为1产生异常第2位 时钟源选择 有两个 0:AHB(72mhz)/8 = 9mhz 1: 72mhz第16位 标志位是不是为0STK_LOAD 重装载值72000000/1 x 72 = 1000000/1 = 1us1us * 1000000 = 1sSTK_VAL 当前计数值 为0会重装载库函数SysTick_Config() 配置systick返回值 成功为0 失败为1例子:原创 2020-08-18 13:47:46 · 129 阅读 · 0 评论 -
stm32笔记 EXIT
中断中断是中断,异常不一定是中断,中断包含在异常优先级 具体看中断向量表在startup_stm32fxxxx_md.s(DCD:数据定义( Data Definition )伪指令一般用于为特定的数据分配存储单元)中断函数在stm32f10x_it.c,可用startup_stm32fxxxx_md.s跳转过去外部中断对应NVIC 向量中断控制器具体参考手册Table 272. NVIC_IRQChannel 值NVIC_IRQChannel 描述WWDG_IRQChannel 窗原创 2020-08-17 13:11:07 · 297 阅读 · 0 评论 -
stm32笔记 gpio
使能时钟RCC_APB2PeriphClockCmd使能或者失能 APB2 外设时钟具体参考芯片手册RCC_APB2Periph_AFIO 功能复用 IO 时钟RCC_APB2Periph_GPIOA GPIOA 时钟RCC_APB2Periph_GPIOB GPIOB 时钟RCC_APB2Periph_GPIOC GPIOC 时钟RCC_APB2Periph_GPIOD GPIOD 时钟RCC_APB2Periph_GPIOE GPIOE 时钟RCC_APB2Periph_ADC1 A原创 2020-08-17 10:40:20 · 364 阅读 · 0 评论