当前位置: 首页 > wzjs >正文

e点互动网站网络宣传渠道有哪些

e点互动网站,网络宣传渠道有哪些,惠州营销型网站建设,哈尔滨做网站价格系列文章目录 文章目录系列文章目录前言1 硬件连接2 目录结构3 软件编写3.1 main.c3.2 beep_driver3.2.1 beep_driver.c3.2.2 beep_driver.h3.3 board_config3.3.1 board_config.c3.3.2 board_config.h3.4 utils3.4.1 system_config.h总结前言 在各种单片机中,都离…

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 1 硬件连接
  • 2 目录结构
  • 3 软件编写
    • 3.1 main.c
    • 3.2 beep_driver
      • 3.2.1 beep_driver.c
      • 3.2.2 beep_driver.h
    • 3.3 board_config
      • 3.3.1 board_config.c
      • 3.3.2 board_config.h
    • 3.4 utils
      • 3.4.1 system_config.h
  • 总结


前言

在各种单片机中,都离不开蜂鸣器。蜂鸣器可以作为一种简单方便地报警手段。在随之而来的智能物联中,蜂鸣器需要将报警状态上报到云端,此时就需要保存蜂鸣器的开关状态。本文为了一劳永逸,决定作出一个将来永不再更新的蜂鸣器驱动,将来所需要的改变只需要改变板子支持文件,不再关注蜂鸣器驱动文件本身,可以方便的进行移植使用。所提供的函数支持大部分场景使用。


1 硬件连接

硬件连接如图所示:
在这里插入图片描述
BEEP连接到了单片机的PB8引脚,通过控制这个引脚的高低电平,就可以控制蜂鸣器发音。

2 目录结构

在这里插入图片描述


3 软件编写

3.1 main.c

#include "board_config.h"/************************************************蜂鸣器驱动实验现象:蜂鸣器响灭交替。淘宝店铺:https://shop475501589.taobao.com/?spm=pc_detail.29232929/evo365560b447259.shop_block.dshopinfo.5dd97dd6JvMuG3咸鱼店铺:https://www.goofish.com/personal?spm=a21ybx.item.itemHeader.1.c17a3da6hy8k28&userId=3890583014哔哩哔哩:https://space.bilibili.com/482024430?spm_id_from=333.788.upinfo.detail.click作者:胜磊电子
************************************************//************************************* 宏定义 *******************************************************//*********************************** 局部函数 *******************************************************//*
************************************************************
*	函数名称:	main
*
*	函数功能:	
*
*	入口参数:	无
*
*	返回参数:	0
*
*	说明:
************************************************************
*/
int main(void)
{// 初始化所有外设BOARD_InitAll();while (1) {// 主循环// 使用板级定义的LED对象// 使用蜂鸣器Beep_On(&BOARD_BEEP);for(uint32_t i=0;i<500000;i++);// 使用蜂鸣器Beep_Off(&BOARD_BEEP);for(uint32_t i=0;i<500000;i++);}
}

3.2 beep_driver

3.2.1 beep_driver.c

#include "beep_driver.h"/************************************************淘宝店铺:https://shop475501589.taobao.com/?spm=pc_detail.29232929/evo365560b447259.shop_block.dshopinfo.5dd97dd6JvMuG3咸鱼店铺:https://www.goofish.com/personal?spm=a21ybx.item.itemHeader.1.c17a3da6hy8k28&userId=3890583014哔哩哔哩:https://space.bilibili.com/482024430?spm_id_from=333.788.upinfo.detail.click作者:胜磊电子
************************************************//*** @brief  初始化蜂鸣器* @param  beep: 蜂鸣器结构体指针* @param  GPIOx: GPIO端口* @param  GPIO_Pin: GPIO引脚* @retval 无*/
void Beep_Init(Beep_TypeDef* beep, GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) {GPIO_InitTypeDef GPIO_InitStructure;uint32_t RCC_APB2Periph_GPIOx = 0;// 根据GPIO端口确定RCC时钟if (GPIOx == GPIOA) {RCC_APB2Periph_GPIOx = RCC_APB2Periph_GPIOA;} else if (GPIOx == GPIOB) {RCC_APB2Periph_GPIOx = RCC_APB2Periph_GPIOB;} else if (GPIOx == GPIOC) {RCC_APB2Periph_GPIOx = RCC_APB2Periph_GPIOC;} else if (GPIOx == GPIOD) {RCC_APB2Periph_GPIOx = RCC_APB2Periph_GPIOD;} else if (GPIOx == GPIOE) {RCC_APB2Periph_GPIOx = RCC_APB2Periph_GPIOE;}// 使能GPIO时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOx, ENABLE);// 配置GPIO为推挽输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOx, &GPIO_InitStructure);// 初始化蜂鸣器结构体beep->GPIOx = GPIOx;beep->GPIO_Pin = GPIO_Pin;beep->state = BEEP_OFF;// 默认关闭蜂鸣器GPIO_ResetBits(GPIOx, GPIO_Pin);
}/*** @brief  打开蜂鸣器* @param  beep: 蜂鸣器结构体指针* @retval 无*/
void Beep_On(Beep_TypeDef* beep) {GPIO_SetBits(beep->GPIOx, beep->GPIO_Pin);beep->state = BEEP_ON;
}/*** @brief  关闭蜂鸣器* @param  beep: 蜂鸣器结构体指针* @retval 无*/
void Beep_Off(Beep_TypeDef* beep) {GPIO_ResetBits(beep->GPIOx, beep->GPIO_Pin);beep->state = BEEP_OFF;
}/*** @brief  切换蜂鸣器状态* @param  beep: 蜂鸣器结构体指针* @retval 无*/
void Beep_Toggle(Beep_TypeDef* beep) {if (beep->state == BEEP_ON) {Beep_Off(beep);} else {Beep_On(beep);}
}/*** @brief  获取蜂鸣器状态* @param  beep: 蜂鸣器结构体指针* @retval 蜂鸣器状态*/
Beep_State Beep_GetState(Beep_TypeDef* beep) {return beep->state;
}

3.2.2 beep_driver.h

#ifndef BEEP_DRIVER_H
#define BEEP_DRIVER_H#include "system_config.h"/************************************************淘宝店铺:https://shop475501589.taobao.com/?spm=pc_detail.29232929/evo365560b447259.shop_block.dshopinfo.5dd97dd6JvMuG3咸鱼店铺:https://www.goofish.com/personal?spm=a21ybx.item.itemHeader.1.c17a3da6hy8k28&userId=3890583014哔哩哔哩:https://space.bilibili.com/482024430?spm_id_from=333.788.upinfo.detail.click作者:胜磊电子
************************************************/// 蜂鸣器状态枚举
typedef enum {BEEP_OFF = 0,BEEP_ON = 1
} Beep_State;// 蜂鸣器结构体定义
typedef struct {GPIO_TypeDef* GPIOx;     // GPIO端口uint16_t GPIO_Pin;       // GPIO引脚Beep_State state;        // 蜂鸣器当前状态
} Beep_TypeDef;// 函数声明
void Beep_Init(Beep_TypeDef* beep, GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void Beep_On(Beep_TypeDef* beep);
void Beep_Off(Beep_TypeDef* beep);
void Beep_Toggle(Beep_TypeDef* beep);
Beep_State Beep_GetState(Beep_TypeDef* beep);#endif /* BEEP_DRIVER_H */  

3.3 board_config

3.3.1 board_config.c

#include "board_config.h"/************************************************淘宝店铺:https://shop475501589.taobao.com/?spm=pc_detail.29232929/evo365560b447259.shop_block.dshopinfo.5dd97dd6JvMuG3咸鱼店铺:https://www.goofish.com/personal?spm=a21ybx.item.itemHeader.1.c17a3da6hy8k28&userId=3890583014哔哩哔哩:https://space.bilibili.com/482024430?spm_id_from=333.788.upinfo.detail.click作者:胜磊电子
************************************************/// 定义蜂鸣器对象
Beep_TypeDef BOARD_BEEP;void BOARD_InitBeep(void) {// 初始化蜂鸣器 (PB8)Beep_Init(&BOARD_BEEP, GPIOB, GPIO_Pin_8);
}void BOARD_InitAll(void) {// 初始化所有外设BOARD_InitBeep();
}

3.3.2 board_config.h

#ifndef BOARD_CONFIG_H
#define BOARD_CONFIG_H#include "beep_driver.h"/************************************************淘宝店铺:https://shop475501589.taobao.com/?spm=pc_detail.29232929/evo365560b447259.shop_block.dshopinfo.5dd97dd6JvMuG3咸鱼店铺:https://www.goofish.com/personal?spm=a21ybx.item.itemHeader.1.c17a3da6hy8k28&userId=3890583014哔哩哔哩:https://space.bilibili.com/482024430?spm_id_from=333.788.upinfo.detail.click作者:胜磊电子
************************************************/// 导出蜂鸣器对象供外部使用
extern Beep_TypeDef BOARD_BEEP;// 板子初始化函数
void BOARD_InitAll(void);void BOARD_InitBeep(void);#endif /* BOARD_CONFIG_H */    

3.4 utils

3.4.1 system_config.h

#ifndef SYSTEM_CONFIG_H
#define SYSTEM_CONFIG_H// 包含所有必要的STM32标准库头文件
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"// 其他常用头文件
#include <stdint.h>
#include <stdbool.h>#endif /* SYSTEM_CONFIG_H */    

总结

通过这样封装,将来只需要将重点放在board_config里面就可以完成不同板子之间的移植了。不需要再关心蜂鸣器驱动的实现。

http://www.dtcms.com/wzjs/64434.html

相关文章:

  • 海南做网站公司哪家好seo排名培训公司
  • php做的网站怎么上传网站seo完整seo优化方案
  • 店铺网站建设策划书世界大学排名
  • 南京电商网站建设公司排名seo每日工作内容
  • 郑州做企业网站的成都网站建设软件
  • 做暧暖爱视频1000部在线网站东莞网站公司
  • 句容网站建设河北网站建设制作
  • 网站开发总监招聘比百度强大的搜索引擎
  • 北京网站制作工作室宁波seo关键词排名
  • 怎么做网站横幅百度网盘破解版
  • 专业的o2o网站建设整合网络营销
  • 网站建设尾款收取宁波谷歌seo推广
  • 开封公司做网站网站关键词
  • 四川建设厅特种工报名网站seo收费标准
  • 厦门网站建设多少钱优化网站排名费用
  • 怎么做网站手机版什么是推广
  • 穿着高跟鞋做的网站站长之家seo查找
  • 网站每天做多少外链合适常用的网络营销推广方法有哪些
  • 服务器怎么做看视频的网站独立站seo优化
  • 珠海酒店网站建设今日新闻最新头条10条内容
  • 医疗网站优化最近新闻小学生摘抄
  • 丹徒做网站泉州seo按天计费
  • 网站弹出广告的是怎么做的百度电脑端入口
  • 如何更换网站服务商怎么创建网站?
  • 大型网站建设用什么系统好济南seo官网优化
  • 手机端网站制作教程安全又舒适的避孕方法有哪些
  • 苏州实力做网站公司有哪些爱网站关键词查询工具长尾
  • 网站开发什么技术路线百度服务电话在线人工
  • 有域名如何做网站seo网站关键词优化报价
  • 商洛建设公司网站自制网页