HAl库控制L298N直流电机旋转笔记
主函数开始后的处理流程:
1..所有外设初始化:HAL_Init()
2.系统时钟配置
- RCC振荡器初始化:HAL_RCC_OsConfig()
- RCC时钟初始化:HAL_RCC_ClockConfig()
- 系统滴答定时器初始化:HAL_SYSTICK_Config()
3.高级定时器初始化
- 基本环境初始化:HAL_TIM_Base_Init()
- 时钟源配置:HAL_TIM_ConfigClockSource()
- 比较输出初始化(包含mcu硬件初始化):HAL_TIM_PWM_Init()
- 初始化:HAL_TIM_Base_MspInit()
- 反初始化:HAL_TIM_Base_MspDeInit()
- 主输出模式同步:HAL_TIMEx_MasterConfigSynchronization()
- 刹车和死区时间配置:HAL_TIMEx_ConfigBreakDeadTime()
- 通道比较输出配置:HAL_TIM_PWM_ConfigChannel()
- 定时器实际时钟频率为:72MHz/(定时器预分频+1)=36MHz
- PWM频率为:定时器实际时钟频率/(定时器周期+1),[定时器周期为900的话,36MHz/(900+1)=40Khz]
- 实际PWM频率为:PWM频率/(高级定时器重复计数寄存器值+1),[高级定时器重复计数寄存器值为0的话,40KHz/0+1=40KHz]
- PWM占空比为:定时器通道比较输出脉冲/定时器周期*100%,占空比为50%时电机不转。[定时器通道比较输出脉冲为450,定时器周期为900的话,则占空比为50%,电机不转]
- GPIO引脚初始化
- a.GPIO端口时钟使能:__HAL_RCC_GPIOA_CLK_ENABLE()
- b.设置IO引脚:Pin
- c.设置工作模式:Mode
- d.设置速度:Speed
- e.完成初始化:HAL_GPIO_Init()
4.启动定时器:HAL_TIM_BASE_Start()
5.启动定时器通道和互补通道PWM输出:HAL_TIM_PWM_Start() 、 HAL_TIMEx_PWMN_Start()
6.死循环:while(1){}
备注:
1.设置定时器捕获比较寄存器(定时器通道比较输出脉冲)的值:__HAL_TIM_SET_COMPARE(handle、channel、compare)
2.设置延时:HAL_Delay(1000)
3.使用定时器功能输出PWM信号到L298N直流电机驱动器,使其驱动25GA370直流电机转动。
4.编码器用于电机测速。在电机转动一圈时编码器可以输出固定的脉冲数,通过读取编码器脉冲可以获取当前电机转动状态。一般处理编码器脉冲有两种方法:T法:计算一定量的脉冲数所用的时间;M法:计算一段固定时间内所捕获的脉冲数。
HAl库控制L298N直流电机旋转笔记的更多相关文章
- STM32 HAL库 UART 串口读写功能笔记
https://www.cnblogs.com/Mysterious/p/4804188.html STM32L0 HAL库 UART 串口读写功能 串口发送功能: uint8_t TxData[10 ...
- STM32 之 HAL库(固件库) _
1 STM32的三种开发方式 通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全不一样的.一般大多数都会选用标准库和HAL库,而极少部分人会通过直 ...
- STM32 HAL库与标准库的区别_浅谈句柄、MSP函数、Callback函数
最近笔者开始学习STM32的HAL库,由于以前一直用标准库进行开发,于是发现了HAL库几点好玩的地方,在此分享. 1.句柄在STM32的标准库中,假设我们要初始化一个外设(这里以USART为例)我们首 ...
- STM32 之 HAL库(固件库)
1 STM32的三种开发方式 通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全不一样的.一般大多数都会选用标准库和HAL库,而极少部分人会通过直 ...
- stm32 HAL库笔记(零)
最近在设计四旋翼飞行器,用stm32f407,有三种开发方式可以选择:一.寄存器开发.二:库函数开发.三:HAL库开发,考虑了一下,选择了HAL库,原因如下: 1. 寄存器开发相对较慢,寄存器很多,配 ...
- matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色
一起来学matlab-matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 < ...
- WS2812B彩灯详细讲解篇(STM32 PWM+DMA控制 STM32 HAL库编程 循环延时控制多种控制方式)
一.效果展示 观看演示效果:https://www.bilibili.com/video/BV1JT4y1P72Q 二. 基础认识 (一) 小理论 WS2812B是一种智能控制LED光源,将控制电路 ...
- stm32 HAL库笔记(一)——串口的操作
昨天分析了普通io口的使用,和初始化代码流程,回顾一下,首先定义一个配置io口功能的结构体,然后开启时钟,再去配置这个结构体里面的各个成员变量,每个成员变量都有很多种选择,可以看各个成员变量 后面的注 ...
- stm32 HAL库笔记(一)——普通IO口
今天介HAL库操作普通IO口,就是输入/输出. 如果用CubeMX配置io工程,打开以后可以看到如下代码: GPIO_InitTypeDef GPIO_Initure; __HAL_RCC_GPIOB ...
随机推荐
- MySQL之数据操纵语言(DML)
数据操纵语言(DML) 数据操纵语(Data Manipulation Language),简称DML. DML主要有四个常用功能. 增 删 改 查 insert delete update sele ...
- urllib2连接超时设置
#urllib2设置超时 #获取网页的源码 def getHtml(url,i): if i > 2: return try: req = urllib2.Request(url) time.s ...
- 20192113 2020-2021-2 《Python程序设计》实验三报告
20192113 2020-2021-2 <Python程序设计>实验三报告 课程:<Python程序设计> 班级: 1921 姓名: 衣丽莎 学号:20192113 实验教师 ...
- 安装Linux操作系统过程及出现的问题
写在前面的话:由于是昨天装的,很多图片没来得及及时的保存,只好凭记忆回想,出现的问题只能回忆起大致的操作及应用软件. 另外,目前是小白一枚. 在安装时,我一开始想直接采用硬盘安装,参考帖子:http: ...
- TensorFlow解析常量、变量和占位符
TensorFlow解析常量.变量和占位符 最基本的 TensorFlow 提供了一个库来定义和执行对张量的各种数学运算.张量,可理解为一个 n 维矩阵,所有类型的数据,包括标量.矢量和矩阵等都是特殊 ...
- 【NX二次开发】Block UI 文本颜色/字体/宽度
属性说明 常规 类型 描述 BlockID String 控件ID Enable Logical 是否可操作 Group Logical 是否分 ...
- ConcurrentSkipListMap - 秒懂
疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 面试必备 + 面试必备 [博客园总入口 ] 疯狂创客圈 经典图书 : <Sprin ...
- 面试常问的Java虚拟机内存模型,看这篇就够了!
一.虚拟机 同样的java代码在不同平台生成的机器码肯定是不一样的,因为不同的操作系统底层的硬件指令集是不同的. 同一个java代码在windows上生成的机器码可能是0101.......,在lin ...
- 一次性搞清Java中的类加载问题
摘要:很多时候提到类加载,大家总是没法马上回忆起顺序,这篇文章会用一个例子为你把类加载的诸多问题一次性澄清. 本文分享自华为云社区<用1个例子加5个问题,一次性搞清java中的类加载问题[奔跑吧 ...
- conn / as sysdba连接不上
问题: SQL> conn / as sysdbaERROR:ORA-09817: Write to audit file failed.Linux-x86_64 Error: 28: No s ...