LED流水灯
这段代码是用于STM32F10x系列微控制器的程序,主要目的是初始化GPIOA并使其所有引脚按照特定的模式进行闪烁。下面是对这段代码的逐行解释:
#include "stm32f10x.h"
:这一行包含了STM32F10x系列微控制器的设备头文件。这个头文件包含了该系列微控制器的一些寄存器和定义。#include "Delay.h"
:这一行包含了自定义的“Delay.h”头文件。这个头文件可能包含了用于产生延迟的函数或宏定义。int main(void)
:这是主函数的开始,它是程序的入口点。{
:开始主函数的代码块。RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
:这行代码使能了GPIOA的时钟。在STM32中,为了使用某个外设(如GPIO),首先需要使能该外设的时钟。这里使用的是APB2总线上的GPIOA外设。GPIO_InitTypeDef GPIO_Initstructure;
:定义了一个GPIO_InitTypeDef
类型的变量GPIO_Initstructure
。这个结构体通常用于初始化GPIO。GPIO_Initstructure.GPIO_Mode = GPIO_Mode_Out_PP;
:设置GPIO的模式为推挽输出模式。GPIO_Initstructure.GPIO_Pin = GPIO_Pin_All;
:设置要初始化的GPIO引脚为所有引脚。GPIO_Initstructure.GPIO_Speed = GPIO_Speed_50MHz;
:设置GPIO的输出速度为50MHz。GPIO_Init(GPIOA, &GPIO_Initstructure);
:使用上面定义的GPIO_Initstructure
结构体的值来初始化GPIOA。}
:结束初始化部分。while(1)
:这是一个无限循环,程序将一直运行这个循环中的代码。{
:开始while循环的代码块。GPIO_Write(GPIOA,~0x0001);
:将GPIOA的Pin 0和Pin 1设置为高电平,其他引脚设置为低电平。Delay_ms(10);
:延迟10毫秒。GPIO_Write(GPIOA,~0x0002);
:将GPIOA的Pin 2和Pin 3设置为高电平,其他引脚设置为低电平。Delay_ms(10);
:延迟10毫秒。GPIO_Write(GPIOA,~0x0004);
:将GPIOA的Pin 4和Pin 5设置为高电平,其他引脚设置为低电平。Delay_ms(10);
:延迟10毫秒。GPIO_Write(GPIOA,~0x0008);
:将GPIOA的Pin 6和Pin 7设置为高电平,其他引脚设置为低电平。Delay_ms(10);
:延迟10毫秒。GPIO_Write(GPIOA,~0x0010);
:将GPIOA的Pin 8和Pin 9设置为高电平,其他引脚设置为低电平。Delay_ms(10);
:延迟10毫秒。GPIO_Write(GPIOA,~0x0020);
:将GPIOA的Pin 10和Pin 11设置为高电平,其他引脚设置为低电平。Delay_ms(10);
:延迟10毫秒。GPIO_Write(GPIOA,~0x0040);
:将GPIOA的Pin 12和Pin 13设置为高电平,其他引脚设置为低电平。Delay_ms(10);
:延迟10毫秒。GPIO_Write(GPIOA,~0x0080);
:将GPIOA的Pin 14和Pin 15设置为高电平,其他引脚设置为低电平。Delay_ms(10);
:延迟10毫秒。}
:结束while循环的代码块。}
:结束主函数的代码块
#include "stm32f10x.h" // Device header
#include "Delay.h"
int main(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitTypeDef GPIO_Initstructure;
GPIO_Initstructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Initstructure.GPIO_Pin = GPIO_Pin_0;
GPIO_Initstructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_Initstructure);
while(1)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_0);
Delay_ms(500);
GPIO_SetBits(GPIOA,GPIO_Pin_0);
Delay_ms(500);
GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);
Delay_ms(100);
GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);
Delay_ms(100);
GPIO_WriteBit(GPIOA,GPIO_Pin_0,(BitAction)0);
Delay_ms(100);
GPIO_WriteBit(GPIOA,GPIO_Pin_0,(BitAction)1);
Delay_ms(100);
}
}
相关文章:
LED流水灯
这段代码是用于STM32F10x系列微控制器的程序,主要目的是初始化GPIOA并使其所有引脚按照特定的模式进行闪烁。下面是对这段代码的逐行解释: #include "stm32f10x.h":这一行包含了STM32F10x系列微控制器的设备头文件。这个头文件包含…...

MySQL-B-tree和B+tree区别
B-tree(平衡树)和Btree(平衡树的一种变种)是两种常见的树状数据结构,用于构建索引以提高数据库的查询性能。它们在一些方面有相似之处,但也有一些关键的区别。以下是B-tree和Btree的主要区别: …...

架构篇08:架构设计三原则
文章目录 合适原则简单原则演化原则小结 成为架构师是每个程序员的梦想,但并不意味着把编程做好就能够自然而然地成为一个架构师,优秀程序员和架构师之间还有一个明显的鸿沟需要跨越,这个鸿沟就是“不确定性”。 对于编程来说,本…...

基于SpringBoot Vue汽车租赁系统
大家好✌!我是Dwzun。很高兴你能来阅读我,我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结,还为大家分享优质的实战项目,本人在Java项目开发领域有多年的经验,陆续会更新更多优质的Java实战项目&#x…...
idea带的maven在SpringBoot下载jar包出错、下载jar包速度慢
找到idea安装目录 /IntelliJ IDEA/plugins/maven/lib/maven3/conf/settings.xml 搜索:mirrors 添加到mirrors标签里。(默认下载包是从国外拉取,速度慢,现在替换成国内阿里的链接) <mirror><id>central</id><…...
datasets的一些使用技巧
#加载某类文件作为数据集 dataset load_dataset("json", data_files"./train_pair_1w.json", split"train") #加载数据集中的子数据集 datasets load_dataset("clue",name"afqmc",#trust_remote_codeTrue) train_datas…...

react 实现页面状态缓存(keep-alive)
前言: 因为 react、vue都是单页面应用,路由跳转时,就会销毁上一个页面的组件。但是有些项目不想被销毁,想保存状态。 比如:h5项目跳转其他页面返回时,页面状态不丢失。设想一个 页面我滑倒了中间…...
spring和springboot、springMVC有什么区别?
前言 大家好,我是chowley,今天来聊一下,刚在面试中被问到的一个经典问题 spring和springboot、springMVC有什么区别? Spring、Spring Boot 和 Spring MVC 是 Spring Framework 生态中的不同组件,各自有不同的角色和…...

centos 启动nacos pg版本
背景:支持国产化需求,不再使用mysql 1.修改插件 git clone https://github.com/wuchubuzai2018/nacos-datasource-extend-plugins.git cd nacos-datasource-extend-plugins/nacos-postgresql-datasource-plugin-ext mvn package编译成功后,…...

实验:MySQL 客户端SocketTimeout 抓包分析
实验准备 服务端环境准备 服务器信息 阿里云 99 大洋白嫖机 $ cat /proc/version Linux version 5.15.0-83-generic (builddlcy02-amd64-027) (gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #92-Ubuntu SMP Mon Aug 14 09:30:42 UT…...
rocketmq双主双从部署+dashbord
1、主机规划 主机节点地址主机Anamesrv192.168.2.228:9876主机Abroker-a192.168.2.228:10911主机Abroker-b192.168.2.228:11911主机Bnamesrv192.168.2.229:9876主机Bbroker-c192.168.2.229:10911主机Bbroker-d192.168.2.229:11911 2、两台主机都需要执行,创建mq需…...

OpenHarmony当前进展和未来趋势
操作系统自20世纪50年代诞生,经历了从专用操作系统到通用操作系统的转变。整体可以将操作系统的发展历史分为3个阶段:PC时代、移动互联网时代、万物互联时代。 PC时代主要以计算机为主,用户规模从1970年的10亿增长到1990年的30亿。这一时代诞…...

php学习
php基础语法 一 php程序 1.php标记 开始标记<?php 和结束标记 ?>中间写 PHP 代码 当解析一个文件时,PHP 会寻找起始和结束标记,也就是告诉php 开始和停止解析二者之间的代码。此种解析方式使得PHP 可以被嵌入到各种不同的文档中去ÿ…...

ruoyi框架教程
心血来潮,写一篇关于ruoyi【若依】框架从0-1的教程。说一下使用感受吧,如果有一个架构师或者老手已经把架构改造完成也能指导你如何快速上手,那么你在后面的增删改查系列开发起来会如鱼得水。如果没有人改造,也没有人教你…...

通过浏览器URL地址,5分钟内渗透你的网站!很刑很可拷!
今天我来带大家简单渗透一个小破站,通过这个案例,让你深入了解为什么很多公司都需要紧急修复各个中间件的漏洞以及进行URL解析拦截等重要操作。这些措施的目的是为了保护网站和系统的安全性。如果不及时升级和修复漏洞,你就等着被黑客攻击吧&…...

dubbo:深入理解Apache Dubbo与实战
dubbo核心组件 层次名 作 用 Service 业务层。包括业务代码的接口与实现,即开发者实现的业务代码 config 配置层。主要围绕ServiceConfig (暴露的服务配置)和ReferenceConfig (引用的服务配置)两个实现类展开…...

写着玩的程序:pycharm实现无限弹窗程序(非病毒程序,仅整蛊使用)
运行环境 PyCharm 2023.2.1 python3.11 具体内容 源代码 import tkinter as tk from tkinter import messagebox import threadingclass PopupGenerator:def __init__(self):self.root tk.Tk()self.root.geometry("200x120")self.root.title("无限弹窗&qu…...

计算机网络——运输层(2)暨小程送书
计算机网络——运输层(2)暨小程送书 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 运输层(2)TCP/IP对比TCP(传输控制协议):IP(互联网协议):总结 拥塞…...

FPGA高端项目:Xilinx Zynq7020 系列FPGA纯verilog图像缩放工程解决方案 提供3套工程源码和技术支持
目录 1、前言版本更新说明给读者的一封信FPGA就业高端项目培训计划免责声明 2、相关方案推荐我这里已有的FPGA图像缩放方案本方案在Xilinx Kintex7 系列FPGA上的应用本方案在Xilinx Artix7 系列FPGA上的应用本方案在国产FPGA紫光同创系列上的应用本方案在国产FPGA高云系列上的应…...

【分布式技术专题】「分布式技术架构」 探索Tomcat集群架构原理和开发分析指南
探索Tomcat技术架构设计模式的奥秘 Tomcat集群原理Tomcat集群能带来什么Tomcat集群产生什么问题Tomcat 单服务体系架构Tomcat集群"简单版"首先要解决Session共享的问题典型负载均衡策略分析Session管理-Session Sticky粘滞会话:Session管理-Session 复制S…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...

如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...

AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...