单片机中如何通过程序控制震动马达震动
流程
- 先看电路图,知道怎么动
- 电路分析
- 画一个控制流程图
- 建立.C文件和.H文件
- 在main.c中调用
先看电路图,知道怎么动
当遇到需要通过程序控制实际硬件的时候,首先我们需要从硬件原理图(电路图)开始,找到需要控制的硬件,看看引脚和电路结构分析一下要如何启动。举个例子:
电路分析
图中三极管是起到一个开关的作用,通过三极管的饱和或截止来控制M-是否接地形成闭合回路。因此当MTO-CTL(马达控制的英文简写)是高电平时马达开始震动。
画一个控制流程图
初始化是大部分程序的开始,然后震动和控制震动的时间最后停止震动。
建立.C文件和.H文件
随便用什么建立2个文件,如mot-vib.c和mot-vib.h。为什么要建立2个文件?因为一般来说函数写在.c文件中,而函数名是在.h文件中声明,需要使用函数时就包含.h文件,也就是:
#include "mot-vib.h"
文件建好后,就开始在.c文件中写代码。
#include<stdio.h>
#include "lxl_gpio_all_init.h"//MY_GPIO_MOTO_ENABLE
#include "Motor_vibration.h"
#include "gpio.h"
#include "clock.h"//WaitMs
#include "mot-vib.h"
//看自己在本文件中调用了哪些就包含那些.h文件
//控制震动马达IO口初始化的函数
void Motor_Vib_init_func(){#if 1hal_gpio_fmux(MY_GPIO_MOTO_ENABLE,Bit_ENABLE); //打开复用hal_gpioretention_register(MY_GPIO_MOTO_ENABLE); //打开gpio保持功能,休眠状态保持输出电平hal_gpio_pin_init(MY_GPIO_MOTO_ENABLE,GPIO_OUTPUT); //将io口初始化为输出hal_gpio_fast_write(MY_GPIO_MOTO_ENABLE,0); //设置输出为0#endif
}
/*控制震动马达震动时间的函数 MS*/
void Motor_Vib(uint32_t time){Motor_Vib_init_func(); // io口初始化hal_gpio_fast_write(MY_GPIO_MOTO_ENABLE,1); // 开始震动WaitMs(time); // 延时函数hal_gpio_fast_write(MY_GPIO_MOTO_ENABLE,0); // 关闭震动
}
然后开始写.h文件的代码这个主要是声明一下函数。
#ifndef __MOTOT_VIBRATION_H__
#define __MOTOT_VIBRATION_H__#ifdef __cplusplus
extern "C" {#endif#include "clock.h"
void Motor_Vib_init_func();//控制震动马达IO口初始化的函数
void Motor_Vib(uint32_t time);//控制马达震动时间的函数 MS#ifdef __cplusplus
}
#endif
#endif
开头的两行是为了避免声明冲突,紧接着的3行是为了方便c++使用者调用时不会出错,中间的3行才是这个.h文件的核心–声明函数名。
在main.c中调用
在mian.c中include 对应的.h文件然后调用,最后烧录验证。
单片机中如何通过程序控制震动马达震动相关推荐
- STM32为何能在众多单片机中脱颖而出?
现在STM32资料教程如此丰富,但还是很多人学不会- 假如STM32像10年前的NXP单片机资料一样少,估计学不会的人会更多. 大家好,我是无际,一个踩坑单片机开发10年的老油条. 这些年,我用过很多 ...
- 单片机中存储器扩展位地址线怎么算_小白学单片机 :AT89S51单片机基本硬件结构认识(2)...
AT89S51单片机存储器的空间配置及功能结构 AT89S51单片机的存储器在物理结构上可以分为4个不同的存储空间:(1)内部程序存储器:(2)片内数据存储器:(3)片外数据存储器(最大可扩展到64K ...
- 单片机中的ROM,RAM和FLASH的作用
本文部分参考自:http://blog.sina.com.cn/s/blog_98ca54fc01017y4t.html 并在此基础上进行整理,添加了关于flash的问题. 之前从较为抽象的角度介绍了 ...
- 联合体在单片机中的应用
转自:http://baike.baidu.com/item/%E8%81%94%E5%90%88%E4%BD%93?fr=aladdin 联合体在单片机中的应用 单片机中经常会遇见分离高低字节的操作 ...
- 51单片机中的定时器
文章目录 1 51单片机中的定时器介绍 1.1 定时器的初步认识 1.2 定时器的寄存器 1.3 使用定时器的方法 1.4 定时时间的计算 2 定时器模式1 2.1 定时器模式1原理分析 2.2 使用 ...
- 单片机中灯泡显示miss_单片机实例分享,如何设计八路抢答器
单片机作为可编程器件,简化了电路的设计.方便了逻辑设计,从此再也不用使用一大堆电路做硬件逻辑了.拆开任何一件功能稍微复杂一点电子产品,里边都可以看到单片机的身影.学会单片机对找工作也很有利,而且待遇还 ...
- 单片机中如何将BCD码拆开_单片机二进制BCD码转换实验程序流程图
二进制BCD码转换 一.实验目的 1.掌握简单的数值转换算法 2.基本了解数值的各种表达方法 二.实验说明 单片机中的数值有各种表达方式,这是单片机的基础.掌握各种数制之间的转换是一种基本功.我们将给 ...
- html5控制单片机,10.2 单片机中 PWM 的原理与控制程序
PWM 在单片机中的应用是非常广泛的,它的基本原理很简单,但往往应用于不同场合上意义也不完全一样,这里我先把基本概念和基本原理给大家介绍一下,后边遇到用的时候起码知道是个什么东西. PWM 是 Pul ...
- 51单片机中使用ucos ii的优缺点(好文)
摘要:近年来,在单片机系统中嵌入操作系统已经成为人们越来越关心的一个话题.本文通过对一种源码公开的嵌入式实时操作系统ucos ii的分析,以51系列单片机为例,阐述了在单片机中使用该嵌入式操作系统的优 ...
最新文章
- 乖离性暗机器人_《乖离性百万亚瑟王》国服超弩暗机器人平民通关攻略
- Centos-Glassfish安装
- html内联框上下重叠,如何解决IOS端两个内联块元素无法上下对齐的问题?
- 大数据WEB阶段 Maven与SSM框架整合
- 牛客练习赛26 E-树上路径 (树链剖分+线段树)
- 网络基础:分享几个路由器设置小技巧,总有用得到的一天!
- Python编写caffe代码
- 解决编译错误: 非法字符: '\ufeff' 解决方案|错误: 需要class, interface或enum
- Python脚本控制的WebDriver 常用操作 十八 获取测试对象的css属性
- 解析FL Studio冻结小技巧
- f-stack nginx 多进程模式启动 main_loop 流程分析
- windows之电脑开机出现 this product is covered by one or more of the following prtents
- linux卸载usb声卡,Linux alsa 声卡驱动 安装 卸载 设置默认声卡
- raspberrypi连接神经计算棒人脸识别
- 信用卡诈骗罪16个有效辩点
- 电脑登陆出现此工作站和主域间的信任关系失败
- Android wms粗略介绍
- Windows10如何配置java环境
- surface pro5双系统(ubuntu)的适配问题大全
- 牛顿迭代法解线性方程matlab程序,牛顿迭代法matlab程序(解线性方程组)
热门文章
- 12. GeoTrellis数据输出篇之输出COG到本地文件系统
- 长期不用的银行卡而不去注销账户,可能欠银行的钱?
- mysql使用笔记(一)静态实现POVIT() 行转列
- python接单业余赚钱的门路_程序员业余时间怎么快速一年赚200万
- 深度神经网络中基于提前退出的快速推理方法的研究与实现
- 2021 Jiangsu Collegiate Programming Contest——K. Longest Continuous 1
- oracle12c 创建数据库和表(一)
- GD32F450创建工程模板
- 常用工具实践-HTML转PDF
- mysql官网下载的zip如何安装