流程

  • 先看电路图,知道怎么动
    • 电路分析
  • 画一个控制流程图
  • 建立.C文件和.H文件
  • 在main.c中调用

先看电路图,知道怎么动

  当遇到需要通过程序控制实际硬件的时候,首先我们需要从硬件原理图(电路图)开始,找到需要控制的硬件,看看引脚和电路结构分析一下要如何启动。举个例子:

电路分析

  图中三极管是起到一个开关的作用,通过三极管的饱和或截止来控制M-是否接地形成闭合回路。因此当MTO-CTL(马达控制的英文简写)是高电平时马达开始震动。

画一个控制流程图

Created with Raphaël 2.3.0开始初始化开始震动延时ms停止震动结束

  初始化是大部分程序的开始,然后震动和控制震动的时间最后停止震动。

建立.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文件然后调用,最后烧录验证。

单片机中如何通过程序控制震动马达震动相关推荐

  1. STM32为何能在众多单片机中脱颖而出?

    现在STM32资料教程如此丰富,但还是很多人学不会- 假如STM32像10年前的NXP单片机资料一样少,估计学不会的人会更多. 大家好,我是无际,一个踩坑单片机开发10年的老油条. 这些年,我用过很多 ...

  2. 单片机中存储器扩展位地址线怎么算_小白学单片机 :AT89S51单片机基本硬件结构认识(2)...

    AT89S51单片机存储器的空间配置及功能结构 AT89S51单片机的存储器在物理结构上可以分为4个不同的存储空间:(1)内部程序存储器:(2)片内数据存储器:(3)片外数据存储器(最大可扩展到64K ...

  3. 单片机中的ROM,RAM和FLASH的作用

    本文部分参考自:http://blog.sina.com.cn/s/blog_98ca54fc01017y4t.html 并在此基础上进行整理,添加了关于flash的问题. 之前从较为抽象的角度介绍了 ...

  4. 联合体在单片机中的应用

    转自:http://baike.baidu.com/item/%E8%81%94%E5%90%88%E4%BD%93?fr=aladdin 联合体在单片机中的应用 单片机中经常会遇见分离高低字节的操作 ...

  5. 51单片机中的定时器

    文章目录 1 51单片机中的定时器介绍 1.1 定时器的初步认识 1.2 定时器的寄存器 1.3 使用定时器的方法 1.4 定时时间的计算 2 定时器模式1 2.1 定时器模式1原理分析 2.2 使用 ...

  6. 单片机中灯泡显示miss_单片机实例分享,如何设计八路抢答器

    单片机作为可编程器件,简化了电路的设计.方便了逻辑设计,从此再也不用使用一大堆电路做硬件逻辑了.拆开任何一件功能稍微复杂一点电子产品,里边都可以看到单片机的身影.学会单片机对找工作也很有利,而且待遇还 ...

  7. 单片机中如何将BCD码拆开_单片机二进制BCD码转换实验程序流程图

    二进制BCD码转换 一.实验目的 1.掌握简单的数值转换算法 2.基本了解数值的各种表达方法 二.实验说明 单片机中的数值有各种表达方式,这是单片机的基础.掌握各种数制之间的转换是一种基本功.我们将给 ...

  8. html5控制单片机,10.2 单片机中 PWM 的原理与控制程序

    PWM 在单片机中的应用是非常广泛的,它的基本原理很简单,但往往应用于不同场合上意义也不完全一样,这里我先把基本概念和基本原理给大家介绍一下,后边遇到用的时候起码知道是个什么东西. PWM 是 Pul ...

  9. 51单片机中使用ucos ii的优缺点(好文)

    摘要:近年来,在单片机系统中嵌入操作系统已经成为人们越来越关心的一个话题.本文通过对一种源码公开的嵌入式实时操作系统ucos ii的分析,以51系列单片机为例,阐述了在单片机中使用该嵌入式操作系统的优 ...

最新文章

  1. 乖离性暗机器人_《乖离性百万亚瑟王》国服超弩暗机器人平民通关攻略
  2. Centos-Glassfish安装
  3. html内联框上下重叠,如何解决IOS端两个内联块元素无法上下对齐的问题?
  4. 大数据WEB阶段 Maven与SSM框架整合
  5. 牛客练习赛26 E-树上路径 (树链剖分+线段树)
  6. 网络基础:分享几个路由器设置小技巧,总有用得到的一天!
  7. Python编写caffe代码
  8. 解决编译错误: 非法字符: '\ufeff' 解决方案|错误: 需要class, interface或enum
  9. Python脚本控制的WebDriver 常用操作 十八 获取测试对象的css属性
  10. 解析FL Studio冻结小技巧
  11. f-stack nginx 多进程模式启动 main_loop 流程分析
  12. windows之电脑开机出现 this product is covered by one or more of the following prtents
  13. linux卸载usb声卡,Linux alsa 声卡驱动 安装 卸载 设置默认声卡
  14. raspberrypi连接神经计算棒人脸识别
  15. 信用卡诈骗罪16个有效辩点
  16. 电脑登陆出现此工作站和主域间的信任关系失败
  17. Android wms粗略介绍
  18. Windows10如何配置java环境
  19. surface pro5双系统(ubuntu)的适配问题大全
  20. 牛顿迭代法解线性方程matlab程序,牛顿迭代法matlab程序(解线性方程组)

热门文章

  1. 12. GeoTrellis数据输出篇之输出COG到本地文件系统
  2. 长期不用的银行卡而不去注销账户,可能欠银行的钱?
  3. mysql使用笔记(一)静态实现POVIT() 行转列
  4. python接单业余赚钱的门路_程序员业余时间怎么快速一年赚200万
  5. 深度神经网络中基于提前退出的快速推理方法的研究与实现
  6. 2021 Jiangsu Collegiate Programming Contest——K. Longest Continuous 1
  7. oracle12c 创建数据库和表(一)
  8. GD32F450创建工程模板
  9. 常用工具实践-HTML转PDF
  10. mysql官网下载的zip如何安装