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_RESET
    GPIO_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);
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何在Linux上搭建本地Docker Registry并实现远程连接

Linux 本地 Docker Registry本地镜像仓库远程连接 文章目录 Linux 本地 Docker Registry本地镜像仓库远程连接1. 部署Docker Registry2. 本地测试推送镜像3. Linux 安装cpolar4. 配置Docker Registry公网访问地址5. 公网远程推送Docker Registry6. 固定Docker Registry公网地址…

【python算法】迪杰斯特拉算法 python实现

迪杰斯特拉算法 文章目录 迪杰斯特拉算法简介核心思想贪心算法的优缺点运行过程代码伪代码Python代码 简介 迪杰斯特拉算法的是用于图搜索的一种算法&#xff0c;其作用是图中搜索出单源最短路径。单源最短路径问题是一个给定起始点和目标点&#xff0c;在图中搜索出由起始点到…

4.Swin Transformer目标检测——训练数据集

1.centos7 安装显卡驱动、cuda、cudnn-CSDN博客 2.安装conda python库-CSDN博客 3.Cenots Swin-Transformer-Object-Detection环境配置-CSDN博客 步骤1&#xff1a;准备待训练的coco数据集 下载地址&#xff1a;https://download.csdn.net/download/malingyu/88519420 htt…

尼得科电机的强大性能,将列车门和屏蔽门的开合变得从容而安全

城市脉动&#xff0c;人流涌动。 无论城市轨道交通还是远途铁路运输&#xff0c; 尼得科电机的强大性能&#xff0c;将列车门和屏蔽门的开合变得从容而安全。 尼得科的电机方案&#xff0c;有助于列车门稳准开闭&#xff0c;保障乘客安全无忧。高效驱动&#xff0c;让乘客的行程…

Win10笔记本开热点后电脑断网的解决方法

在Win10笔记本电脑中用户可以随时打开热点&#xff0c;但是发现热点开启后电脑就会断网&#xff0c;网络不稳定就会影响到用户的正常使用。下面小编给大家介绍两种简单的解决方法&#xff0c;解决后用户在Win10笔记本电脑开热点就不会有断网的问题出现了。 具体解决方法如下&am…

基于FPGA的PCIe-Aurora 8/10音频数据协议转换系统设计阅读笔记

文章可知网下载阅读&#xff0c;该论文设计了一种 PC 到光纤模块&#xff08;基于Aurora的光纤传输&#xff09;的数据通路&#xff0c;成功完成了Aurora 以及 DDR 等模块的功能验证。 学习内容&#xff1a; 本次主要学习了Pcie高速串行总线协议、Aurora高速串行总线协议、DDR相…

在直播系统中使用RTSP协议传递视频

目录 概述 1、环境准备 2、拉流URL地址 3、导播软件取流 &#xff08;1&#xff09;OBS中拉取RTSP流 &#xff08;2&#xff09;芯象中拉取RTSP流 &#xff08;3&#xff09;vMix中拉取RTSP流 写在最后 概述 提到RTSP协议&#xff0c;很容易想到RTMP协议&#xff0c;它…

Grafana安装配置

配置文件路径 /etc/grafana/grafana.ini 一、Grafana 安装 https://grafana.com/grafana/download?editionoss&pgget&plcmtselfmanaged-box1-cta1 以centos为例 #安装 sudo yum install -y https://dl.grafana.com/oss/release/grafana-10.2.0-1.x86_64.rpm#修改端…

正点原子嵌入式linux驱动开发——Linux WIFI驱动

WIFI的使用已经很常见了&#xff0c;手机、平板、汽车等等&#xff0c;虽然可以使用有线网络&#xff0c;但是有时候很多设备存在布线困难的情况&#xff0c;此时WIFI就是一个不错的选择。正点原子STM32MP1开发板支持USB和SDIO这两种接口的WIFI&#xff0c;本章就来学习一下如何…

Maven 从入门到精通

目录 一. 前言 二. Maven 下载与安装 2.1. 下载 2.2. 安装 三. Maven 核心概念 3.1. POM 3.2. 约定的目录结构 3.3. 坐标 3.4. 依赖管理 3.4.1. 直接依赖和间接依赖 3.4.2. 依赖的排除 3.4.3. 统一的版本管理 3.4.4. 依赖范围 3.5. 仓库 3.6. 生命周期/插件/目标…

JavaSpringBootMysql大学生兼职平台94598-计算机毕业设计项目选题推荐(附源码)

摘 要 当今人类社会已经进入信息全球化和全球信息化、网络化的高速发展阶段。丰富的网络信息已经成为人们工作、生活、学习中不可缺少的一部分。人们正在逐步适应和习惯于网上贸易、网上购物、网上支付、网上服务和网上娱乐等活动&#xff0c;人类的许多社会活动正在向网络化发…

iview实现table里面每行数据的跳转

我的需求是跳转到第三方网站&#xff0c;看官方是写了如何跳转站内路由&#xff0c;不符合我的要求&#xff0c;在csdn发现了一篇文章&#xff0c;我贴一下代码 <template><Table border :columns"ReportColumns" :data"ReportData"><templ…

vue3 - swiper插件 实现PC端的 视频滑动功能(仿抖音短视频)

swiper官网 ​​​​​​swiper属性/组件查询 vue中使用swiper 步骤&#xff1a; ① npm install swiper 安装 ② 基础模板&#xff1a; <div><swiper class"swiper-box" :direction"vertical":grabCursor"true" :mousewheel"tr…

【Mybatis小白从0到90%精讲】12:Mybatis删除 delete, 推荐使用主键删除!

文章目录 前言XML映射文件方式推荐使用主键删除注解方式工具类前言 在实际开发中,我们经常需要删除数据库中的数据,MyBatis可以使用XML映射文件或注解来编写删除(delete)语句,下面是两种方法的示例。 XML映射文件方式 Mapper: int delete(int id);Mapper.xml:

使用easyui前端框架快速构建一个crud应用

本篇文章将会详细介绍jquery easyui前端框架的使用&#xff0c;通过创建一个crud应用来带大家快速掌握easyui的使用。 easyui是博主最喜欢的前端框架&#xff0c;没有之一&#xff0c;因为它提供了多种主题&#xff0c;而且圆润可爱的组件吸引了我。 快速开始 easyui的官网地址…

css控制卡片内部的左右布局

先放效果图 纯css样式 可以根据需求进行更改 <template> <!-- 卡片盒子 --><div class"card_box "><el-card class"box-card w400" v-for"(item,index) in cardList" :key"index"><div slot"heade…

山西电力市场日前价格预测【2023-11-09】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-11-09&#xff09;山西电力市场全天平均日前电价为369.84元/MWh。其中&#xff0c;最高日前电价为784.47元/MWh&#xff0c;预计出现在17: 45。最低日前电价为158.90元/MWh&#xff0c;预计…

【Python爬虫库】pytube使用方法

一、pytube库简介 pytube库是一个python第三方库&#xff0c;用于youtube视频的抓取和其他相关操作。官方文档&#xff1a;pytube 二、基本操作 1、显示视频标题 from pytube import YouTube yt YouTube(https://youtube.com/watch?vIAJsZWhj6GI) print(yt.title)说明&am…

分享5款会带来意想不到效果的软件

​ 有时候一些小工具&#xff0c;能给你带来一些意想不到的效果&#xff0c;我们来看看下面这5款工具&#xff0c;你又用过其中几款呢&#xff1f; 1.密码管理器——Bitwarden ​ Bitwarden是一款开源的密码管理器&#xff0c;可以安全地生成、存储和分享密码和其他敏感信息。…

汽车发动机各系统部件构造图解及名称大全(超详细)

我们都知道发动机是汽车的心脏,相信大家都有东拼西凑的学一些发动机知识,今天汽车维修网小编给大家系统的整理整个发动机的基础知识,如果能认真看完,相信肯定有所收获。全文3065字,81幅结构图,建议收藏、分享后再慢慢看。 首先我们来看一下 发动机总成构造图解 发动机…