HAL库直流电机编码测速(L298N驱动)笔记
主函数开始后的处理流程:
1.外设初始化:HAL_Init()
2.系统时钟配置
- RCC振荡器初始化:HAL_RCC_OsConfig()
- RCC时钟初始化:HAL_RCC_ClockConfig()
- 系统滴答定时器初始化:HAL_SYSTICK_Config()
3.按键GPIO初始化
- GPIO端口时钟使能:__HAL_RCC_GPIOA_CLK_ENABLE()
- 工作模式
- 激活下拉或上拉
- 引脚初始化:HAL_GPIO_Init()
4.串口初始化
- 串口GPIO端口使能:__HAL_RCC_GPIOA_CLK_ENABLE()
- 串口初始化(包含串口硬件初始化):HAL_UART_Init()
5.编码器定时器初始化
- 定时器时钟使能:__HAL_RCC_TIM3_CLK_ENABLE()
- 编码器GPIO引脚初始化
- GPIO端口时钟使能:__HAL_RCC_GPIOB_CLK_ENABLE()
- 工作模式
- 激活下拉或上拉
- 引脚初始化:HAL_GPIO_Init()
- 编码器中断优先级配置
- 设置中断优先级:HAL_NVIC_SetPriority()
- 使能中断请求:HAL_NVIC_EnableIRQ()
- 定时器基本环境初始化:HAL_TIM_Base_Init()
- 定时器时钟源配置:HAL_TIM_ConfigClockSource()
- 定时器输入捕获环境初始化:HAL_TIM_IC_Init()
- 定时器主输出模式同步:HAL_TIMEx_MasterConfigSynchronization()
- 定时器输入捕获配置:HAL_TIM_IC_ConfigChannel()
6.编码器定时器启动:HAL_TIM_Base_Start()
7.L298N定时器初始化
- 基本环境初始化: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()
8.编码器定时器中断捕获启动:HAL_TIM_IC_Start_IT()
9.L298N定时器通道和互补通道PWM输出(可控制电机正反转)
- HAL_TIM_PWM_Start() 、
- HAL_TIMEx_PWMN_Start()
10.循环:while(1){}
备注:
系统滴答定时器中断回调函数(每发生一次滴答定时器中断进入该回调函数一次):HAL_SYSTICK_Callback()
定时器输入捕获中断回调函数:HAL_TIM_IC_CaptureCallback()
重定向C库函数printf:int fputc(int ch, FILE *f){}
重定向C库函数getchar、scanf:int fgetc(FILE * f){}
HAL库直流电机编码测速(L298N驱动)笔记的更多相关文章
- HAl库控制L298N直流电机旋转笔记
主函数开始后的处理流程: 1..所有外设初始化:HAL_Init() 2.系统时钟配置 RCC振荡器初始化:HAL_RCC_OsConfig() RCC时钟初始化:HAL_RCC_ClockConfi ...
- 【GMT43智能液晶模块】基于HAL库的SDRAM和LCD驱动例程(MDK工程&CubeMX工程)
说明: 1.该工程基于HAL库实现动态存储器SDRAM驱动以及液晶控制器LCD驱动. 2.工程通过STM32CubeMX(Version 4.22.0)配置生成,可直接打开进行配置. 3.KEIL M ...
- 【安富莱】V6,V5开发板用户手册,重在BSP驱动包设计方法,HAL库的框架学习,授人以渔(2019-11-04)
说明: 1.本教程重在BSP驱动包设计方法和HAL库的框架学习,并将HAL库里面的各种弯弯绕捋顺,从而方便我们的程序设计. 2.本次工程延续以往的代码风格,从底层BSP驱动包到应用代码,变量命名,文件 ...
- 【安富莱】STM32H7用户手册发布,重在BSP驱动包设计方法,HAL库的框架学习,授人以渔,更新至63章(2019-07-21)
说明: 1.本教程重在BSP驱动包设计方法和HAL库的框架学习,并将HAL库里面的各种弯弯绕捋顺,从而方便我们的程序设计. 2.由于是基于HAL库的文档,所以不限制H7系列,其它F1,F2,F3,F4 ...
- 【春节歌曲回味 | STM32小音乐盒 】PWM+定时器驱动无源蜂鸣器(STM32 HAL库)
l STM32通过PWM与定时器方式控制无源蜂鸣器鸣响 l STM32小音乐盒,歌曲进度条图形显示与百分比显示,歌曲切换 l 编程使用STM32 HAL库 l IIC OLED界面编程,动画实 ...
- 【STM32H7教程】第47章 STM32H7的FMC总线基础知识和HAL库API
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第47章 STM32H7的FMC总线基础知识和HA ...
- 电机AB相编码器测速
控制任务 检测编码器的脉冲并测速 电路设计 图1 直流电机带减速器和编码器 图2 编码器接线定义 编码器接线定义如下 M1:电机电源接口,绿色的 GND:编码器电源负极输入口,橙色的 C1:编码器A ...
- 微型直流电机控制基本方法 L298N模块
控制任务 让单个直流电机在L298N模块驱动下,完成制动.自由停车,正反转,加减速等基本动作 芯片模块及电路设计 图1 L298N芯片引脚 图2 L298N驱动模块 表1 L298N驱动模块的控制引脚 ...
- 【HAL库每天一例】freemodbus移植
例程下载:资料包括程序.相关说明资料以及软件使用截图 百度云盘:https://pan.baidu.com/s/1slN8rIt 密码:u6m1 360云盘:https://yunpan.cn/OcP ...
随机推荐
- Django(43)restful接口规范
restful接口规范 什么是接口规范?接口规范就是为了采用不同的后台语言,也能使用同样的接口获取到同样的数据.如何写接口:接口规范是规范化书写接口的,写接口要写url.响应数据 注:如果将 ...
- 视频教学动作修饰语:CVPR2020论文解析
视频教学动作修饰语:CVPR2020论文解析 Action Modifiers: Learning from Adverbs in Instructional Videos 论文链接:https://a ...
- 什么是GStreamer?
什么是GStreamer? GStreamer是用于创建流媒体应用程序的框架.基本设计来自俄勒冈大学研究生院的视频管道以及DirectShow的一些想法. GStreamer的开发框架使编写任何类型的 ...
- mybatis学习——多对一和一对多查询
首先先来说明一下数据库,数据库有两张表student表和teacher表: student表如下: teacher表如下: 两张表的关系:多个学生关联一位老师(多对一) *其中tid是外键 需要sql ...
- fiddler概念及原理
一.什么是fiddler? fiddler是位于客户端与服务器端的HTTP代理,它能够记录客户端与服务器之间所有的HTTP请求,可以针对特定的HTTP请求,分析请求数据,设置断点,调试WEB应用,修改 ...
- HR面试:过五关斩六将后,小心阴沟翻船!(史上最全、避坑宝典)
文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...
- raft 图解 (秒懂)
文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...
- Nginx为什么快到根本停不下来?
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器. 图片来自 Pexels Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资 ...
- 「JVM」知识点详解一:JVM运行原理详解
前言 JVM 一直都是面试的必考点,大家都知道,但是要把它搞清楚又好像不是特别容易.JVM 的知识点太散,不系统,今天带大家详细的了解一下jvm的运行原理. 正文 1 什么是JVM? JVM是Java ...
- Linux集群环境下NTP服务器时间同步
NTP介绍 NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议.它的用途是把计算机的时钟同步到世界协调时UTC(Universal Time ...