五、寄存器方式LED灯控制

寄存器方式LED灯控制

1、原理

电路图中相同网络标号表示它们是连接在一起,STM32F103ZET6的PC0-PC7 管脚连接D1-D8发光二极管阴极,如要使 D1 指示灯亮,只需控制 PC0 管脚输出低电平。

2、工程文件

Keil工程包含main.c、stm32f10x.h、startup_stm32f10x_hd.s三个文件

在这里插入图片描述

3、代码

[stm32f10x.h]

#define PERIPH_BASE        ((unsigned int)0x40000000)
#define APB2PERIPH_BASE    (PERIPH_BASE + 0x00010000)
#define GPIOC_BASE         (APB2PERIPH_BASE + 0x1000)
#define GPIOC_CRL 	 	   *(unsigned int*)(GPIOC_BASE+0x00)
#define GPIOC_CRH 	 	   *(unsigned int*)(GPIOC_BASE+0x04)
#define GPIOC_IDR 	 	   *(unsigned int*)(GPIOC_BASE+0x08)
#define GPIOC_ODR 	       *(unsigned int*)(GPIOC_BASE+0x0C)
#define GPIOC_BSRR 	       *(unsigned int*)(GPIOC_BASE+0x10)
#define GPIOC_BRR 	 	   *(unsigned int*)(GPIOC_BASE+0x14)
#define GPIOC_LCKR 	 	   *(unsigned int*)(GPIOC_BASE+0x18)
#define AHBPERIPH_BASE     (PERIPH_BASE + 0x20000)
#define RCC_BASE 		   (AHBPERIPH_BASE + 0x1000)
#define RCC_APB2ENR 	   *(unsigned int*)(RCC_BASE+0x18) 

[main.c]

#include "stm32f10x.h"

typedef unsigned int u32;

void SystemInit()
{

}

void delay(u32 i)
{
  while(i--);
}

int main()
{
  int i,j,k;//此处应用整型变量,否则循环判断出错
  //1.开启GPIOC外设时钟  PC在第4位
  RCC_APB2ENR |=1<<4;
  while(1)
  {
    for(i=0; i<8; i++)
    {
      GPIOC_CRL &=~((0x0f)<<(4*i));//2.设置端口模式 低四位清零 0x0f =0000 1111
      GPIOC_CRL |=3<<(4*i);//0011 推挽输出,50M
      //3.设置BSRR以达到控制数据位,点亮LED
      GPIOC_BSRR=1<<(16+i);//点亮LED
      delay(0xfffff); //最大8个f
      GPIOC_BSRR=1<<(0+i);//熄灭LED
      delay(0xfffff);
    }
    for(j=7; j>=0; j--)
    {
      GPIOC_CRL &=~((0x0f)<<(4*j));
      GPIOC_CRL |=3<<(4*j);
      GPIOC_BSRR=1<<(16+j);
      delay(0xfffff);
      GPIOC_BSRR=1<<(0+j);
      delay(0xfffff);
    }
    for(k=0; k<8; k++)
    {
      GPIOC_CRL &=~((0x0f)<<(4*k));
      GPIOC_CRL |=3<<(4*k);
      GPIOC_BSRR=1<<(16+k);
      delay(0xfffff);
      GPIOC_BSRR=1<<(0+k);
      delay(0xfffff);
    }
  }
}

编辑 2023.03.25 23:38 首次编辑

注:本文旨于自己的学习笔记,禁止转载。

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

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

相关文章

vue开发常用的工具有哪些

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。座右铭&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石&#xff0c;故能成其高。个人主页&#xff1a;小李会科技的…

开启新航路,拓尔思发力AIGC市场 | 爱分析调研

2022年&#xff0c;随着AI聊天机器人GhatGPT在世界范围内持续火爆&#xff0c;极具创意、表现力、个性化且能快速迭代的AIGC技术成功破圈&#xff0c;成为全民讨论热点。 AIGC是指在确定主题下&#xff0c;由算法模型自动生成内容&#xff0c;包括单模态内容如文本、图像、音频…

【Leetcode】队列的性质与应用

文章目录225. 用队列实现栈示例&#xff1a;提示&#xff1a;分析&#xff1a;题解&#xff1a;622. 设计循环队列示例&#xff1a;提示&#xff1a;分析&#xff1a;题解&#xff1a;225. 用队列实现栈 请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&…

个人时间管理网站—Git项目管理

&#x1f31f;所属专栏&#xff1a;献给榕榕&#x1f414;作者简介&#xff1a;rchjr——五带信管菜只因一枚&#x1f62e;前言&#xff1a;该专栏系为女友准备的&#xff0c;里面会不定时发一些讨好她的技术作品&#xff0c;感兴趣的小伙伴可以关注一下~&#x1f449;文章简介…

面试官:如何保证接口幂等性?一口气说了9种方法!

本文已经收录到Github仓库&#xff0c;该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点&#xff0c;欢迎star~ Github地址 大家好&#xff0c;我是大彬~ 今…

idea 关于git使用总结分享

文章目录前言idea 关于git使用总结分享1. git 目录指定自己的git2. git 回滚到指定提交3. git 回滚某个文件4. 从远程仓库分支拉取最新代码5. 切换分支6. 上传到远程仓库7. git 关联上游服务8. 从上游分支拉取最新的代码9. 从上游仓库上取一个新的branch到远程仓库前言 如果您觉…

【LeetCode】二叉树的后序遍历(递归,迭代)

目录 题目要求&#xff1a;给你一棵二叉树的根节点 root &#xff0c;返回其节点值的 后序遍历 方法一&#xff1a;递归 方法二&#xff1a;迭代 思路分析&#xff1a; 代码展示&#xff1a; 复杂度分析 方法三&#xff1a;迭代进阶 思路分析&#xff1a; 代码展示&a…

python玄阶斗技--tkinter库

目录 一.tkinter库介绍 二.功能实现 1.窗口创建 2.Button 按钮 3.Entry 文本输入域 4.text 文本框 5.Listbox 多选下拉框 6.Radiobutton 多选项按钮 7.Checkbutton 多选按钮 8.Scale 滑块(拉动条) 9.Scroolbar 滚动条 10.Menu 菜单栏 11. messagebox 消息框 12…

比肩ChatGPT的国产AI:文心一言——有话说

&#x1f517; 运行环境&#xff1a;chatGPT&#xff0c;文心一言 &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&am…

剑指offer-二维数组中的查找

文章目录题目描述题解一 无脑暴力循环题解二 初始二分法&#x1f315;博客x主页&#xff1a;己不由心王道长&#x1f315;! &#x1f30e;文章说明&#xff1a;剑指offer-二维数组中的查找&#x1f30e; ✅系列专栏&#xff1a;剑指offer &#x1f334;本篇内容&#xff1a;对剑…

怎么设计一个秒杀系统

1、系统部署 秒杀系统部署要单独区别开其他系统单独部署&#xff0c;这个系统的流量肯定很大&#xff0c;单独部署。数据库也要单独用一个部署的数据库或者集群&#xff0c;防止高并发导致整个网站不可用。 2、防止超卖 100个库存&#xff0c;1000个人买&#xff0c;要保证不…

脉诊(切脉、诊脉、按脉、持脉)之法——入门篇

认识脉诊何谓脉诊&#xff1f;脉诊的渊源脉诊重要吗&#xff1f;脉诊确有其事&#xff0c;还是故弄玄虚&#xff1f;中医科学吗&#xff1f;如何脉诊&#xff1f;寸口脉诊法何谓脉诊&#xff1f; 所谓脉诊&#xff0c;就是通过把脉来诊断身体健康状况的一种必要手段。 …

ShowMeAI周刊 | AI独立开发者:帆船旅行但月入万刀;创业吧!新黄金时代来了;资本看好哪些创业方向;被AI震麻的一周again

这是ShowMeAI周刊的第8期。聚焦AI领域本周热点&#xff0c;及其在各圈层泛起的涟漪&#xff1b;拆解AI独立开发者的盈利案例&#xff0c;关注中美AIGC的创业者们&#xff0c;并提供我们的商业洞察。欢迎关注与订阅&#xff01; | &#x1f440;日报&周刊合辑 ⌛ 『Danielle…

vue3 解决各场景 loading过度 ,避免白屏尴尬!

Ⅰ、前言 当我们每次打卡页面&#xff0c;切换路由&#xff0c;甚至于异步组件&#xff0c;都会有一个等待的时间 &#xff1b;为了不白屏&#xff0c;提高用户体验&#xff0c;添加一个 loading 过度动画是 非常 常见的 &#xff1b;那么这几种场景我们应该把 loading 加在哪…

JavaEE多线程-线程池

目录线程池Java标准库提供的线程池线程池的实现线程池 线程池和和字符串常量池, 数据库连接池一样, 都是为了提高程序的运行效率, 减少开销。 随着并发程度的提高, 当我们去频繁的创建和销毁线程, 此时程序的开销还是挺大的, 为了进一步提高效率, 就引入了线程池, 程序中所创建…

基于Java+SSM+Vue的旅游资源网站设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】

博主介绍&#xff1a;专注于Java技术领域和毕业项目实战 &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不然下次找不到哟 Java项目精品实战案例&#xff08;200套&#xff09; 目录 一、效果演示 二、…

Java语言-----封装、继承、抽象、多态、接口

目录 前言 一.封装 1.1封装的定义 1.2访问修饰符的使用 二.继承 2.1继承的定义 2.2继承的方法 2.3继承使用注意点 三.多态 3,1多态的定义 3.2动态绑定 3.3方法重写 3.4向上&#xff08;向下&#xff09;转型 四.抽象 4.1抽象的概述和定义 4.2抽象的使用 五…

python例程:AI智能联系人管理的程序

目录《AI智能联系人管理》程序使用说明主要代码演示代码工程下载路径《AI智能联系人管理》程序使用说明 在PyCharm中运行《AI智能联系人管理》即可进入如图1所示的系统主界面。 图1 系统主界面 说明&#xff1a;在运行程序前&#xff0c;先将当前的计算机连接互联网&#xff…

【网络】https协议

&#x1f941;作者&#xff1a; 华丞臧. &#x1f4d5;​​​​专栏&#xff1a;【网络】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 推荐一款刷题网站 &#x1f449; LeetCode刷题网站 文章…

【深度学习】常见的梯度下降的方法

批量梯度下降&#xff08;Batch Gradient Descent&#xff0c;BGD&#xff09; 这个方法是当所有的数据都经过了计算之后再整体除以它&#xff0c;即把所有样本的误差做平均。这里我想提醒你&#xff0c;在实际的开发中&#xff0c;往往有百万甚至千万数量级的样本&#xff0c…