当前位置: 首页 > news >正文

51单片机/STM32F103/STM32F407学习1_点亮LED灯

目录:

  • 基础知识
  • 单片机从0实现
  • 单片机GPIO介绍

参考连接:

  • 野火霸天虎教程 https://doc.embedfire.com/products/link/zh/latest/mcu/stm32/ebf_stm32f407_batianhu_v1_v2/download/stm32f407_batianhu_v1_v2.html

x.1 基础知识

x.1.1 指针中的取地址,解地址

取地址符号为&,解地址符号为*,使用如下,

int *p = &value;	// 取地址用&
*p = 1;	// 解地址用*

x.1.2 宏编译的条件判断

使用预编译宏来取消编译,

#if 0...#endif

x.1.3 C语言的位操作

常见的位操作有左移,右移,取反,与,或,异或,这部分参考c语言中文网,

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

x.1.4 C语言的置位,清零

第六个位置这个地方设置为1,其他地方不变,使用或操作|= (1<<6)

第六个位置这个地方设置为0,其他地方不变,使用与操作&= ~ (1<<6)

第六五位置设置为0,其他地方不变,&= ~(0x03)<<6;因为0x03是11。

案例如下,孰能生巧,

在这里插入图片描述

x.2 单片机从0实现

x.2.1 51单片机

由于51单片机内部已经实现了寄存器映射,所以在这里可以直接使用寄存器别名来进行访问。

电流从正极流向负极,从高压流向低压(因为存在电势差),电子流动方向和电流流向相反。

如果LED灯的电路图如下,则只需要控制P0,0端口将数值设置为0便可以将电路点亮,

在这里插入图片描述

则代码如下便可实现LED灯的开关,

在这里插入图片描述

x.2.2. stm32f103

寄存器映射指给寄存器地址映射一个别名,这个功能可以通过reg52.hstm32f10x.h两个文件来实现。

LED灯对应的接口为PB0,则意味着是GPIOx_ODR寄存器中的GPIOB0_ODR

GPIOx_ODR是指 general purpose intput output x _ Output data register,是通过ODR来控制LED灯开关的。

  1. SOC厂商在已经有ARM芯片基础上设计了三类地址总线,为AHB,APB2,APB1总线。我们先在参考手册中第二章 存储器和总线架构中找到挂载在APB2地址总线下的GPIOB的绝对地址,

在这里插入图片描述

  1. 我们需要ODR来控制LED灯,所以我们需要找到ODR0的绝对地址,我们根据地址偏移来计算,

在这里插入图片描述

  1. 我们使用ODR0来控制PB0的端口,看了电路图我们知道要实现LED中G颜色的开关,我们需要将PB0的端口电压设置为0V,这个时候我们即将PB0设置为0便可,

在这里插入图片描述

  1. 我们需要通过CRL寄存器来告诉MCU, LED中的PB0为输出值,即配置IO口为 输出。

  2. 打开RCC的时钟寄存器。

最终我们的代码书写如下,

在这里插入图片描述

x.2.2 stm32f407

  1. 更改GPIOx_MODER模式寄存器为输出

AHB1下

  1. 更改RCC时钟控制器

AHB1下

  1. 更改GPIOx_ODR数据寄存器

AHB1下

代码如下,stm32f4xx.h文件内容,

在这里插入图片描述

main.c文件内容,

在这里插入图片描述

x.3 单片机GPIO介绍

x.3.1 GPIO简介

在这里插入图片描述

在这里插入图片描述

407有144个引脚,引脚供电大部分是5V,GPIO属于引脚,但并不是所有引脚都属于GPIO;查找每一个GPIO功能通过数据手册查找。

在这里插入图片描述

x.3.2 GPIO 功能框图讲解

GPIO功能框图如下,

在这里插入图片描述

I/O引脚就是芯片和PCB印刷电路板的解除方式,而I/O引脚的左侧则是芯片的内部电路。

BSRR 指的是bit set reset register,其中set是指置位,是低16位,输出高电平置1。reset是指复位,是指高16位,输出低电平置1。

输入输出是相对ARM芯片而言的,如果往芯片写数据叫输入,从芯片往外写数据叫输出。

在输入中TTL使得输入模拟信号,当大于1.8V时为高电平,当低于1.8V时为低电平。

输入的输入较为简单,输出则较为复杂,输出的流程图如下,

在这里插入图片描述

相关文章:

51单片机/STM32F103/STM32F407学习1_点亮LED灯

目录&#xff1a; 基础知识单片机从0实现单片机GPIO介绍 参考连接&#xff1a; 野火霸天虎教程 https://doc.embedfire.com/products/link/zh/latest/mcu/stm32/ebf_stm32f407_batianhu_v1_v2/download/stm32f407_batianhu_v1_v2.html x.1 基础知识 x.1.1 指针中的取地址&a…...

(Transfer Learning)迁移学习在IMDB上训练情感分析模型

1. 背景 有些场景下&#xff0c;开始的时候数据量很小&#xff0c;如果我们用一个几千条数据训练一个全新的深度机器学习的文本分类模型&#xff0c;效果不会很好。这个时候你有两种选择&#xff0c;1.用传统的机器学习训练&#xff0c;2.利用迁移学习在一个预训练的模型上训练…...

蓝桥杯每日一题2023.11.20

题目描述 “蓝桥杯”练习系统 (lanqiao.cn) 题目分析 方法一&#xff1a;暴力枚举&#xff0c;如果说数字不在正确的位置上也就意味着这个数必须要改变&#xff0c;进行改变记录即可 #include<bits/stdc.h> using namespace std; const int N 2e5 10; int n, a[N], …...

【迅搜02】究竟什么是搜索引擎?正式介绍XunSearch

究竟什么是搜索引擎&#xff1f;正式介绍XunSearch 啥&#xff1f;还要单独讲一下啥是搜索引擎&#xff1f;不就是百度、Google嘛&#xff0c;这玩意天天用&#xff0c;还轮的到你来说&#xff1f; 额&#xff0c;好吧&#xff0c;虽然大家天天都在用&#xff0c;但是我发现&am…...

【Sql】sql server还原数据库的时候,提示:因为数据库正在使用,所以无法获得对数据库的独占访问权。

【问题描述】 sql server 还数据库的时候&#xff0c;提示失败。 点击左下角进度位置&#xff0c;可以得到详细信息&#xff1a; 因为数据库正在使用&#xff0c;所以无法获得对数据库的独占访问权。 【解决方法】 针对数据库先后执行下述语句&#xff0c;获得独占访问权后&a…...

【Go语言实战】(26) 分布式搜索引擎

Tangseng 基于Go语言的搜索引擎 github地址&#xff1a;https://github.com/CocaineCong/tangseng 详细介绍地址&#xff1a;https://cocainecong.github.io/tangseng 这两周我也抽空录成视频发到B站的&#xff5e; 本来应该10月份就要发了&#xff0c;结果一鸽就鸽到现在hh…...

【理解ARM架构】不同方式点灯 | ARM架构简介 | 常见汇编指令 | C与汇编

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《理解ARM架构》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 目录 &#x1f3c0;直接操作寄存器点亮LED灯&#x1f3c0;地址空间&#x1f3c0;ARM内部的寄存…...

JS服务端技术—Node.js知识点锦集

【版权声明】未经博主同意&#xff0c;谢绝转载&#xff01;&#xff08;请尊重原创&#xff0c;博主保留追究权&#xff09; https://blog.csdn.net/m0_69908381/article/details/134544523 出自【进步*于辰的博客】 接触Node.js挺长时间了&#xff0c;工作也经常使用&#xf…...

界面控件DevExpress WPF流程图组件,完美复制Visio UI!(一)

DevExpress WPF Diagram&#xff08;流程图&#xff09;控件帮助用户完美复制Microsoft Visio UI&#xff0c;并将信息丰富且组织良好的图表、流程图和组织图轻松合并到您的下一个WPF项目中。 P.S&#xff1a;DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至…...

为什么选择B+树作为数据库索引结构?

背景 首先&#xff0c;来谈谈B树。为什么要使用B树&#xff1f;我们需要明白以下两个事实&#xff1a; 【事实1】 不同容量的存储器&#xff0c;访问速度差异悬殊。以磁盘和内存为例&#xff0c;访问磁盘的时间大概是ms级的&#xff0c;访问内存的时间大概是ns级的。有个形象…...

什么是神经网络(Neural Network,NN)

1 定义 神经网络是一种模拟人类大脑工作方式的计算模型&#xff0c;它是深度学习和机器学习领域的基础。神经网络由大量的节点&#xff08;或称为“神经元”&#xff09;组成&#xff0c;这些节点在网络中相互连接&#xff0c;可以处理复杂的数据输入&#xff0c;执行各种任务…...

15 Go的并发

概述 在上一节的内容中&#xff0c;我们介绍了Go的类型转换&#xff0c;包括&#xff1a;断言类型转换、显式类型转换、隐式类型转换、strconv包等。在本节中&#xff0c;我们将介绍Go的并发。Go语言以其强大的并发模型而闻名&#xff0c;其并发特性主要通过以下几个元素来实现…...

管理体系标准

管理体系标准 什么是管理体系&#xff1f; 管理体系是组织管理其业务的相互关联部分以实现其目标的方式。这些目标可能涉及许多不同的主题&#xff0c;包括产品或服务质量、运营效率、环境绩效、工作场所的健康和安全等等。 系统的复杂程度取决于每个组织的具体情况。对于某…...

【Java 进阶篇】揭秘 Jackson:Java 对象转 JSON 注解的魔法

嗨&#xff0c;亲爱的同学们&#xff01;欢迎来到这篇关于 Jackson JSON 解析器中 Java 对象转 JSON 注解的详细解析指南。JSON&#xff08;JavaScript Object Notation&#xff09;是一种常用于数据交换的轻量级数据格式&#xff0c;而 Jackson 作为一款优秀的 JSON 解析库&am…...

②【Hash】Redis常用数据类型:Hash [使用手册]

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ Redis Hash ②Redis Hash 操作命令汇总1. hset…...

十七、SpringAMQP

目录 一、SpringAMQP的介绍&#xff1a; 二、利用SpringAMQP实现HelloWorld中的基础消息队列功能 1、因为publisher和consumer服务都需要amqp依赖&#xff0c;因此这里把依赖直接放到父工程mq-demo中 2、编写yml文件 3、编写测试类&#xff0c;并进行测试 三、在consumer…...

Java虚拟机(JVM)的调优技巧和实战

JVM是Java应用程序的运行环境&#xff0c;它负责管理Java应用程序的内存分配、垃圾收集等重要任务。然而&#xff0c;JVM的默认设置并不总是适合所有应用程序&#xff0c;因此需要根据应用程序的需求进行调优。通过对JVM进行调优&#xff0c;可以大大提高Java应用程序的性能和可…...

idea中的sout、psvm快捷键输入,不要太好用了

目录 一、操作环境 二、psvm、sout 操作介绍 2.1 psvm&#xff0c;快捷生成main方法 2.2 sout&#xff0c;快捷生成打印方法 三、探索 psvm、sout 底层逻辑 一、操作环境 语言&#xff1a;Java 工具&#xff1a; 二、psvm、sout 操作介绍 2.1 psvm&#xff0c;快捷生成m…...

shell脚本字典创建遍历打印

解释&#xff1a; 代码块中包含了每个用法的详细解释 #!/bin/bash# 接收用户输入的两个数 echo "请输入第一个数&#xff1a;" read num1 echo "请输入第二个数&#xff1a;" read num2# 创建一个关联数组 declare -A dict1 declare -A dict2# 定义键和值…...

【设计模式】聊聊职责链模式

原理和实现 模板模式变化的是其中一个步骤&#xff0c;而责任链模式变化的是整个流程。 将请求的发送和接收解耦合&#xff0c;让多个接收对象有机会可以处理这个请求&#xff0c;形成一个链条。不同的处理器负责自己不同的职责。 定义接口 public interface Filter {/*** …...

智能门锁常用的国产NFC芯片方案解析:从VRC522到433MHz的选型思考

在智能门锁、酒店锁、桑拿柜锁等非接触式读卡装置中&#xff0c;NFC&#xff08;近场通信&#xff09;读写芯片几乎是标配。而在国产芯片阵营中&#xff0c;VRC522是一款非常典型的代表。今天我们就以VRC522的规格书为切入点&#xff0c;聊聊这类芯片的核心特性、适用场景&…...

从实验室到产线仅需117天:2026年工业AI规模化落地的5个隐藏加速器(某新能源龙头实战复盘)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;2026年工业AI规模化落地的范式跃迁 传统工业AI部署长期受限于“单点智能、孤岛集成、人工调优”的三重瓶颈。至2026年&#xff0c;范式跃迁的核心标志是&#xff1a;从模型驱动转向**产线原生智能&…...

使用Python快速调用Taotoken实现stm32外设配置代码生成

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用Python快速调用Taotoken实现stm32外设配置代码生成 对于stm32开发者而言&#xff0c;编写GPIO、UART、I2C等外设的初始化与配置…...

告别连线噩梦:用SystemVerilog接口(interface)重构你的模块通信(附modport与时钟块实战)

告别连线噩梦&#xff1a;用SystemVerilog接口(interface)重构你的模块通信&#xff08;附modport与时钟块实战&#xff09; 在数字电路设计的进阶之路上&#xff0c;每个工程师都会遇到那个令人头疼的时刻——当模块间的信号连线从最初的几条膨胀到几十条&#xff0c;密密麻麻…...

《龙虾OpenClaw系列:从嵌入式裸机到芯片级系统深度实战60课》031、设备树与硬件描述:从寄存器到设备模型的映射

031、设备树与硬件描述:从寄存器到设备模型的映射 一次让我熬夜到凌晨三点的设备树调试 去年做一款基于i.MX6ULL的工业控制器,外挂了一个SPI接口的ADC芯片——AD7689。硬件设计没问题,原理图确认了三遍,PCB打样回来焊接完,上电。结果呢?SPI读回来的数据全是0xFF。 我第…...

三步搞定B站视频下载:这个Python工具让你永久保存任何想看的视频

三步搞定B站视频下载&#xff1a;这个Python工具让你永久保存任何想看的视频 【免费下载链接】bilibili-downloader B站视频下载&#xff0c;支持下载大会员清晰度4K&#xff0c;持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 你是否曾…...

1222222

我今天来了...

PRAGMATA HYPERVISOR识质存在下载(有修改器 2026最新绿色破解版免费下载

序言&#xff1a;当“观察”成为唯一的武器 在信息爆炸的时代&#xff0c;我们习惯了通过屏幕审视一切。但如果有一天&#xff0c;你的屏幕变成了唯一的防线&#xff0c;而屏幕另一端的东西正试图通过伪装成“人类”来入侵你的世界&#xff0c;你会怎么办&#xff1f; 《PRAG…...

你的ADC采样率真的够吗?一个FFT频谱泄露的实战排查与修复记录

你的ADC采样率真的够吗&#xff1f;一个FFT频谱泄露的实战排查与修复记录 在嵌入式振动监测设备的开发中&#xff0c;频谱分析是诊断机械故障的核心手段。但当我们试图用STM32的ADC采集电机轴承振动信号时&#xff0c;FFT频谱图上却出现了令人困惑的"拖尾"现象——本…...

别再只调光圈快门了!手把手教你理解手机拍照的3A核心(AE/AWB/AF)

手机摄影进阶指南&#xff1a;掌握3A技术拍出专业级照片 每次看到别人用手机拍出惊艳的照片&#xff0c;而自己的作品却总是差强人意&#xff1f;问题可能出在你对手机相机3A系统的理解上。AE&#xff08;自动曝光&#xff09;、AWB&#xff08;自动白平衡&#xff09;和AF&…...