ARMday5

风扇蜂鸣器

1.main.c

#include"led.h"
//封装延时函数
void delay(int ms)
{int i,j;for(i=0;i<ms;i++){for(j=0;j<2000;j++){}}
}
int main()
{//外设初始化all_pplout_init();while(1){BUZZER_ON();delay(2000);BUZZER_OFF();delay(2000);MOTOR_ON();delay(2000);MOTOR_OFF();delay(2000);FAN_ON();delay(2000);FAN_OFF();delay(2000);}return 0;
}

2.led.c

#include "led.h"void all_pplout_init()//led灯的初始化
{//GPIOE/GPIOF时钟使能RCC  |= (0x3<<4);RCC  |= (0x1<<2);//PE10设置为输出GPIOE.MODER &= (~(0X3<<12));GPIOE.MODER |= (0X1<<12);//PF10设置为输出GPIOE.MODER &= (~(0X3<<18));GPIOE.MODER |= (0X1<<18);//PE8设置为输出GPIOE.MODER &= (~(0X3<<12));GPIOE.MODER |= (0X1<<12);//PE10设置为推挽输出GPIOB.OTYPER &= (~(0X1<<6));//PF10设置为推挽输出GPIOE.OTYPER &= (~(0X1<<9));//PE8设置为推挽输出GPIOF.OTYPER &= (~(0X1<<6));//PE10设置为低速输出GPIOB.OSPEEDR &= (~(0X3<<12));//PF10设置为低速输出GPIOE.OSPEEDR &= (~(0X3<<18));//PE8设置为低速输出GPIOF.OSPEEDR &= (~(0X3<<12));//PE10无上拉下拉电阻GPIOB.OPUPDR &= (~(0X3<<12));//PF10无上拉下拉电阻GPIOE.OPUPDR &= (~(0X3<<18));//PE8无上拉下拉电阻GPIOF.OPUPDR &= (~(0X3<<12));//三盏灯默认输出低电平GPIOB.ODR &= (~(0X1<<6));GPIOE.ODR &= (~(0X1<<9));GPIOF.ODR &= (~(0X1<<6));
}//led1亮
void BUZZER_ON()
{GPIOB.ODR |= (0X1<<6);
}
//led2亮
void MOTOR_ON()
{GPIOE.ODR |= (0X1<<9);
}
//led1亮
void FAN_ON()
{GPIOF.ODR |= (0X1<<6);
}//LED1灭
void BUZZER_OFF()
{GPIOB.ODR &= (~(0X1<<6));
}
//LED2灭
void MOTOR_OFF()
{GPIOE.ODR &= (~(0X1<<9));
}
//LED3灭
void FAN_OFF()
{GPIOF.ODR &= (~(0X1<<6));
}    

3.led.h

#ifndef __LED_H__
#define __LED_H__
typedef struct
{unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int OPUPDR;unsigned int IDR;unsigned int ODR;
}gpio_t;#define RCC (*(unsigned int *)0X50000A28)
#define GPIOB (*(gpio_t *)0X50003000)
#define GPIOE (*(gpio_t *)0X50006000)
#define GPIOF (*(gpio_t *)0X50007000)void all_pplout_init();
void BUZZER_ON();
void FAN_ON();
void MOTOR_ON();
void BUZZER_OFF();
void FAN_OFF();
void MOTOR_OFF();#endif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/769807.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

突破编程_C++_C++11新特性(多线程编程的互斥锁 mutex )

1 std::mutex 的基础概念 1.1 std::mutex 的定义与声明 std::mutex 是 C11 标准库中的一个互斥量&#xff08;mutex&#xff09;类&#xff0c;用于保护共享资源的并发访问。在多线程环境中&#xff0c;当多个线程试图同时访问和修改同一资源时&#xff0c;可能会发生数据竞争…

MySQL存储引擎的区别与选择

MySQL存储引擎是数据库用来处理不同表类型的内核组件&#xff0c;每个引擎都有独特的特性和适用场景。以下是MySQL中几种常见存储引擎的主要区别与选择建议&#xff1a; ### 1. InnoDB - 特性 - 支持事务处理&#xff08;ACID属性&#xff09;&#xff0c;适合对数据完整性…

数据结构入门框架

博主b站入口&#xff1a;Uncertanity的个人空间 参考资料&#xff1a; 《大话数据结构》程杰 《数据结构C语言(第二版)》严蔚敏

为什么静态成员函数不能是虚函数

在面向对象编程中&#xff0c;静态成员函数和虚函数都是常见的概念&#xff0c;但它们之间存在着本质上的差异。由于其特性上的差异&#xff0c;静态成员函数不能声明为虚函数。下面我们来探讨一下为什么静态成员函数不能是虚函数。 我在网上查到最多的说法是静态函数没有this指…

【OpenModelica】1 OpenModelica项目架构

1 OpenModelica项目架构 文章目录 1 OpenModelica项目架构一、 架构总览图二、OpenModelica各部分作用 一、 架构总览图 OpenModelica 环境由几个相互连接的子系统组成&#xff0c;如图 1.1 所示。 其中包括&#xff1a; MDT Eclipse 插件图形模型编辑器/浏览器文本模型编辑器…

Vue reactive函数的使用

reactive函数可以定义一个响应式对象。 在div中引用对象里的数据就可以 <template><div class"ttt"><li v-for"data in reactive2" :key"data.name">{{data.name}}</li><h2>{{reactive3.name}}</h2><h2…

开始喜欢上了runnergo,JMeter out了?

RunnerGo是一款基于Go语言、国产自研的测试平台。它支持高并发、分布式性能测试。和JMeter不一样的是&#xff0c;它采用了B/S架构&#xff0c;更灵活、更方便。而且&#xff0c;除了API测试和性能测试&#xff0c;RunnerGo还加上了UI测试和项目管理等实用功能&#xff0c;让测…

代码随想录day30(2)回溯:组合(leetcode77)

题目要求&#xff1a;给定两个整数 n 和 k&#xff0c;返回 1 ... n 中所有可能的 k 个数的组合。 思路&#xff1a;首先定义两个变量&#xff0c;一个存放符合条件的单一结果&#xff0c;另一个存放符合条件结果的集合&#xff0c;for循环用来横向遍历&#xff0c;递归用来纵…

C语言例4-6:格式字符d的使用例子

代码如下&#xff1a; //格式字符d的使用例子 #include<stdio.h> int main(void) {int num1123;long num2123456;printf("num1%d,num1%5d,num1%-5d,num1%2d\n",num1,num1,num1,num1);//以四种不同格式&#xff0c;输出int型数据num1的值printf("num2%ld,…

基于Spring Boot网络相册设计与实现

摘 要 网络相册设计与实现的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品&#xff0c;体验高科技时代带给人们的方便&#xff0c;同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓&#xff0c;iOS相比较起来&am…

Spring和Spring Boot之间的区别

Spring和Spring Boot之间的区别 不仅仅体现在操作简化、配置方式以及开发速度上&#xff0c;还有以下几个方面&#xff1a; 模块化和功能范围&#xff1a; Spring是一个完整的框架&#xff0c;提供了各种各样的功能&#xff0c;包括依赖注入、面向切面编程、数据访问、事务管…

用BI来做金蝶的数据分析,真能随时自助分析?

BI数据分析快的事&#xff0c;大家都知道&#xff0c;那用BI来分析金蝶ERP上的数据也很快&#xff0c;也能随时想怎么分析就怎么分析&#xff0c;想分析哪些数据就分析哪些数据吗&#xff1f; 用BI分析金蝶数据&#xff0c;不仅可随时自助分析&#xff0c;还可极大提高分析效率…

《数据安全技术 数据分类分级规则》及典型行业标准指南要点提炼

数据分类分级发布新国标 千呼万唤&#xff0c;国家标准GB/T 43697-2024《数据安全技术 数据分类分级规则》于3月21日正式发布。作为全国网络安全标准化技术委员会更名后&#xff0c;发布的第一部以“数据安全技术”命名的国家标准&#xff0c;《数据安全技术 数据分类分级规则…

PTA L2-031 深入虎穴 dfs与bfs版

著名的王牌间谍 007 需要执行一次任务&#xff0c;获取敌方的机密情报。已知情报藏在一个地下迷宫里&#xff0c;迷宫只有一个入口&#xff0c;里面有很多条通路&#xff0c;每条路通向一扇门。每一扇门背后或者是一个房间&#xff0c;或者又有很多条路&#xff0c;同样是每条路…

Python库xarray:强大的多维数据处理工具

Python库xarray&#xff1a;强大的多维数据处理工具 在数据科学和科学计算领域&#xff0c;处理多维数据是一项常见而重要的任务。Python库xarray是一个功能强大的工具&#xff0c;专门用于处理、分析和可视化多维数据集。本文将深入介绍xarray库的特性、用法和优势&#xff0c…

基于STM32的个人健康助手的设计

基于STM32的个人健康助手的设计 一、摘要 随着科技的进步和人们生活水平的提高&#xff0c;个人健康管理变得越来越重要。本文介绍了一种基于STM32的个人健康助手的设计&#xff0c;该设计结合了嵌入式系统、传感器技术和数据分析等先进技术&#xff0c;旨在为用户提供便捷、…

MySQL的zerofill 零填充

在 MySQL 中&#xff0c;ZEROFILL 是一种属性&#xff0c;用于在创建表时指定数值列的显示宽度&#xff0c;并在值不足指定宽度时使用零填充&#xff08;前导零&#xff09;。当将 ZEROFILL 属性应用于一个整数列时&#xff0c;MySQL 会在显示该整数时使用零填充以达到指定的宽…

babel起手式

Babel7 以下是各个 ECMAScript 版本引入的一些主要新语法和功能的汇总 ES5 / ECMAScript 5&#xff08;2009年&#xff09; 严格模式 "use strict"。JSON 对象。Array.prototype.forEach()、Array.prototype.map()、Array.prototype.filter()、Array.prototype.redu…

AI智能打架监测报警---豌豆云

AI智能识别打架监测报警是一种专门用于监测和预警打架事件的安全设备。 这种智能系统一般配备高清摄像头和智能分析算法&#xff0c;可以实时监测监控区域内的人员活动&#xff0c;并在检测到打架行为时立即触发警报系统。 打架智能监测报警系统是现代安防领域中一种重要的监…

这回轮到鸿蒙禁用安卓了!!!

1月18日&#xff0c;鸿蒙生态千帆仪式上&#xff0c;华为正式宣布了HarmonyOS NEXT&#xff08;下简称鸿蒙星河版或纯血鸿蒙&#xff09;开发者预览已向开发者开放申请&#xff0c;纯血鸿蒙开始走向普及阶段。伴随着不再兼容安卓的纯血鸿蒙铺开&#xff0c;鸿蒙走进了运营属于自…