STM32_project:led_beep

代码: 

主要部分:

#include "stm32f10x.h"                  // Device header
#include "delay.h"// 给蜂鸣器IO口输出低电平,响,高,不向。
//int main (void)
//{
//    // 开启时钟
//    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,  ENABLE); // rcc外设时钟控制的APB2外设接口, 第一个参数选择点亮那个口,第二个参数使能或者失能
//    // 初始化gpioA的PIN0口
//    GPIO_InitTypeDef GPIO_InitStruct;
//    //GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出
//    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_OD ; // 开漏输出,高电平没有驱动能力
//    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
//    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
//    GPIO_Init(GPIOA, &GPIO_InitStruct); // 用结构体初始化gpio口
//    GPIO_SetBits(GPIOA, GPIO_Pin_0);GPIO_ResetBits(GPIOA, GPIO_Pin_0);GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET); // Bit_RESETGPIO_Write;
//    const int delay_time = 100; // 用来定义常量,有作用域的限制。具有类型检查。
//                                              // const 定义的常量在程序运行时会分配内存,并且具有类型信息不是简单的文本替换。
//   while(1)
//   {
//       GPIO_ResetBits(GPIOA, GPIO_Pin_0);
//       Delay_ms(delay_time);
//       GPIO_SetBits(GPIOA, GPIO_Pin_0);
//       Delay_ms(delay_time);
//       GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET); 
//       Delay_ms(delay_time);
//       GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET); 
//       Delay_ms(delay_time);
//       
//       GPIO_WriteBit(GPIOA, GPIO_Pin_0, (BitAction)0); // Bit_RESET 强制类型转换
//       Delay_ms(delay_time);
//       GPIO_WriteBit(GPIOA, GPIO_Pin_0, (BitAction)(1)); // Bit_RESET
//       Delay_ms(delay_time);
//   }
//}// 常量定义
const int delay_time = 100; // 用来定义常量,有作用域的限制。具有类型检查。// const 定义的常量在程序运行时会分配内存,并且具有类型信息不是简单的文本替换。
// 函数声明                                   
void liushui(void); 
void liushui1(void); 
void beep(void);
void led_1(void);int main (void)
{// 开启时钟// 可以通过按位或,选择多个引脚。RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB,  ENABLE); // rcc外设时钟控制的APB2外设接口, 第一个参数选择点亮那个口,第二个参数使能或者失能// 初始化gpioA的PIN0口GPIO_InitTypeDef GPIO_InitStruct_A;GPIO_InitStruct_A.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出//GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_OD ; // 开漏输出,高电平没有驱动能力GPIO_InitStruct_A.GPIO_Pin = GPIO_Pin_All;    // PIN0 ~ PIN15 选中所有引脚。GPIO_InitStruct_A.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStruct_A); // 用结构体初始化gpio口// 初始化gpioB的PIN口GPIO_InitTypeDef GPIO_InitStruct_B;GPIO_InitStruct_B.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出GPIO_InitStruct_B.GPIO_Pin = GPIO_Pin_All;    // PIN0 ~ PIN15 选中所有引脚。GPIO_InitStruct_B.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStruct_B); // 用结构体初始化gpio口//  GPIO_SetBits(GPIOA, GPIO_Pin_0);
//  GPIO_ResetBits(GPIOA, GPIO_Pin_0); // 可以同时设置多个引脚
//  GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET); // Bit_RESET
//  GPIO_Write;while(1){liushui();beep()  ;liushui1();beep()  ;led_1();}
}void led_1()
{int led1 [4] = {0x0081, 0x0042, 0x0024, 0x0018};int i;for(i=0; i <=3 ; i++) {GPIO_Write(GPIOA, ~led1[i]);Delay_ms(delay_time);}beep();for(i=3; i >= 0 ; i--) {GPIO_Write(GPIOA, ~led1[i]);Delay_ms(delay_time);}beep();
}void beep()
{GPIO_ResetBits(GPIOB, GPIO_Pin_12); // 响Delay_ms(delay_time);GPIO_SetBits(GPIOB, GPIO_Pin_12);Delay_ms(delay_time);GPIO_ResetBits(GPIOB, GPIO_Pin_12); // 响Delay_ms(delay_time);GPIO_SetBits(GPIOB, GPIO_Pin_12);
}void liushui()
{GPIO_Write(GPIOA, ~0x0001);Delay_ms(delay_time);GPIO_Write(GPIOA, ~0x0002);Delay_ms(delay_time);GPIO_Write(GPIOA, ~0x0004);Delay_ms(delay_time);GPIO_Write(GPIOA, ~0x0008);Delay_ms(delay_time);GPIO_Write(GPIOA, ~0x0010);Delay_ms(delay_time);GPIO_Write(GPIOA, ~0x0020);Delay_ms(delay_time);GPIO_Write(GPIOA, ~0x0040);Delay_ms(delay_time);GPIO_Write(GPIOA, ~0x0080);Delay_ms(delay_time);
}
void liushui1()
{GPIO_Write(GPIOA, ~0x0080);Delay_ms(delay_time);GPIO_Write(GPIOA, ~0x0040);Delay_ms(delay_time);GPIO_Write(GPIOA, ~0x0020);Delay_ms(delay_time);GPIO_Write(GPIOA, ~0x0010);Delay_ms(delay_time);GPIO_Write(GPIOA, ~0x0008);Delay_ms(delay_time);GPIO_Write(GPIOA, ~0x0004);Delay_ms(delay_time);GPIO_Write(GPIOA, ~0x0002);Delay_ms(delay_time);GPIO_Write(GPIOA, ~0x0001);Delay_ms(delay_time);
}

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

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

相关文章

Git 行结束符:LF will be replaced by CRLF the next time Git touches it问题解决指南

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

怎么学编程效率高,编程练习网站编程软件下载,中文编程开发语言工具下载

怎么学编程效率高&#xff0c;编程练习网站编程软件下载&#xff0c;中文编程开发语言工具下载 给大家分享一款中文编程工具&#xff0c;零基础轻松学编程&#xff0c;不需英语基础&#xff0c;编程工具可下载。 这款工具不但可以连接部分硬件&#xff0c;而且可以开发大型的…

MySQL的默认引擎为什么是InnoDB

MySQL支持InnoDB、MyISAM、MEMORY、CSV等多个存储引擎&#xff0c;那为什么选InnoDB作为默认引擎呢&#xff1f; 主要原因有几点&#xff1a; 事务 事务主要用于保持数据一致性&#xff0c;是一组操作的集合&#xff0c;要么全部成功&#xff0c;要么全部失败。InnoDB引擎提供…

Pytorch 里面torch.no_grad 和model.eval(), model.train() 的作用

torch.no_grad: 影响模型的自微分器&#xff0c;使得其停止工作&#xff1b;这样的话&#xff0c;数据计算的数据就会变快&#xff0c;内存占用也会变小&#xff0c;因为没有了反向梯度计算&#xff0c;当然&#xff0c;我哦们也无法做反向传播。 model.eval() 和model.train()…

【动手学深度学习】课程笔记 05-07 线性代数、矩阵计算和自动求导

05 线性代数 1. 基础知识补充 向量相关 矩阵相关 简单来说&#xff0c;范数是用来衡量矩阵&#xff08;张量&#xff09;大小的值&#xff0c;范数的值有不同的规定。 2. 代码实现 仅记录一些我比较陌生的知识。 张量的克隆 A torch.arange(20, dtypetorch.float32).resh…

【C++】继承详解

本篇要分享的内容是关于继承的内容哼哼哼啊啊啊啊啊啊啊啊啊啊啊啊啊啊 以下为本篇目录 目录 1.简单了解继承 2.继承的简单定义 3.继承简单使用 4.继承方式 4.1基类的privat 4.2基类的protected 4.3不可见与private的区别 5.父子类对象赋值转换 6.继承的作用域 7.子…

Linux C语言进阶-D14指针函数

指针函数&#xff1a;指一个函数的返回值为地址量的函数 <数据类型>* <函数名称>&#xff08;<参数说明>&#xff09; { 语句序列; } 返回值&#xff1a;全部变量的地址、静态变量的地址、字符串常量的地址、堆上的地址 注意&#xff1a;不可返回局部变量…

项目管理之如何出道(上)

前言 终于有时间更新了&#xff0c;大家是不是等不及了&#xff1f;那么书接上文&#xff0c;言归正传。 各位盆友&#xff0c;时间之轮已划入夜晚&#xff0c;尝试静下心来&#xff0c;思考一番。 Q1&#xff1a;是否曾经期待自己做一名项目经理&#xff0c;干了几年的coder甚…

【NLP】特征提取: 广泛指南和 3 个操作教程 [Python、CNN、BERT]

什么是机器学习中的特征提取&#xff1f; 特征提取是数据分析和机器学习中的基本概念&#xff0c;是将原始数据转换为更适合分析或建模的格式过程中的关键步骤。特征&#xff0c;也称为变量或属性&#xff0c;是我们用来进行预测、对对象进行分类或从数据中获取见解的数据点的…

软件测试/测试开发丨接口测试学习笔记,TcpDump与WireShark

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接&#xff1a;https://ceshiren.com/t/topic/27859 协议分析工具 网络监听&#xff1a;TcpDump WireShark 代理 Proxy 推荐工具&#xff1a;手工测试charles [全平台]、安全测试burpsuite [全平台 j…

chrome安装vue devtools

不能访问应用商店 如果可以访问应用商店可以往下看 插件源代码 选择shell-chrome&#xff0c;这是官方的插件源码 下载源代码打包 参考教程 点击扩展按钮->管理扩展程序->打开开发者模式->把crx文件拖拽进去即可 可以访问chrome应用商店 插件地址 官方文档地址 选…

VSCode修改主题为Eclipse 绿色护眼模式

前言 从参加开发以来&#xff0c;一直使用eclipse进行开发&#xff0c;基本官方出新版本&#xff0c;我都会更新。后来出来很多其他的IDE工具&#xff0c;我也尝试了&#xff0c;但他们的主题都把我劝退了&#xff0c;黑色主题是谁想出来&#xff1f;&#x1f602; 字体小的时…

二维码智慧门牌管理系统升级解决方案:轻松实现辖区范围门址统计

文章目录 前言一、系统功能与优势 前言 在这个数字化时代&#xff0c;传统的门牌管理系统已经无法满足现代管理的需求。为了满足辖区内门址的统计需求&#xff0c;我们引入了全新的二维码智慧门牌管理系统升级解决方案。这一升级将让您轻松实现辖区范围门址的统计&#xff0c;…

开源的全能维护 U 盘工具:Ventoy

开源的全能维护 U 盘工具&#xff1a;Ventoy 本篇文章聊聊迄今为止&#xff0c;我用着最舒服的一款开源 U 盘启动工具&#xff0c;Ventoy。 写在前面 好久不见&#xff0c;接下来计划写一个比较连续的内容&#xff0c;就先从最小的处着手吧。 经过长久的折腾&#xff0c;除…

pytest 的使用===谨记

发现用例的规则 a) 文件test_.py开头和_test.py结尾 b) Test开头的类中test开头的方法&#xff08;测试类不能带有__init__方法&#xff09; c) 模块中test开头的函数&#xff08;可以不在class中&#xff09; 注意点&#xff1a; pytest是以方法为单位发现用例的&#xff0c;你…

吴恩达《机器学习》6-4->6-7:代价函数、简化代价函数与梯度下降、高级优化、多元分类:一对多

一、代价函数 逻辑回归的代价函数是用来度量模型预测与实际结果之间的差异的。与线性回归使用均方误差不同&#xff0c;逻辑回归使用的代价函数在数学上更为复杂。为了理解逻辑回归的代价函数&#xff0c;首先要明白逻辑回归的假设函数&#xff1a; ℎ&#x1d703;(&#x1…

激光雷达和人工智能

几十年来&#xff0c;激光雷达一直是许多行业中非常有用的工具&#xff0c;但直到最近&#xff0c;随着人工智能&#xff08;AI&#xff09;解决方案的引入&#xff0c;我们才开始认识到它的真正潜力。激光雷达&#xff0c;又称光探测和测距&#xff0c;是一种遥感技术。它利用…

React构建组件的方式有哪些?区别?

一、是什么 组件就是把图形、非图形的各种逻辑均抽象为一个统一的概念&#xff08;组件&#xff09;来实现开发的模式 在React中&#xff0c;一个类、一个函数都可以视为一个组件 在之前文章中&#xff0c;我们了解到组件所存在的优势&#xff1a; 降低整个系统的耦合度&am…

nginx下载安装和日志切割

目录 一、nginx安装配置 1.nginx版本 2.nginx安装配置 3.查看安装后的nginx 4.配置PATH变量 二、日志切割 1.给当前日志文件重命名 2.等待 3.写bash脚本 4.查看日志结果 5.加入crontab定时任务 结语 一、nginx安装配置 1.nginx版本 nginx如今分为商业版&#xff0…

imagettftext(): Could not find/open font 解决办法

问题&#xff1a;Captcha验证码不能正常显示&#xff0c;是因为使用GD库imagettftext()函数时&#xff0c;报“Warning: imagettftext(): Could not find/open font in ”警告 。 网上的解决方法: 将font路径的相对路径 转成 绝对路径即可 $fontfile "./fonts/*.ttf&q…