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

news2024/11/19 5:32:37

目录:

  • 基础知识
  • 单片机从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时为低电平。

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

在这里插入图片描述

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

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

相关文章

房间够亮还有必要台灯吗?考研必备护眼台灯推荐

我认为不管台灯是否够亮还是需要使用台灯的&#xff01; 一般房间的吸顶灯距离桌面都有很长的一段距离&#xff0c;虽说我们正常观察时是觉得亮度很足了&#xff0c;不过实际上照射到桌面的光线是所剩无几的&#xff0c;远远达不到我们学习、办公时所需要的亮度。而且单开一盏室…

多协议数据库管理软件 Navicat Premium 16 mac中文版功能

Navicat Premium 16 mac是一款跨平台数据库管理工具&#xff0c;支持多种数据库类型&#xff0c;如MySQL、MariaDB、Oracle、SQLite、PostgreSQL等等。它提供了丰富的数据库管理功能和工具&#xff0c;可以帮助开发人员和数据库管理员快速地创建、管理和维护数据库。 Navicat P…

效率提升利器:Automa插件的实用指南

Automa是一个chrome扩展&#xff0c;通过拖拽0代码实现工作流&#xff0c;模拟网页的各种点击、表单填写等操作&#xff0c;使用时点击插件脚本一键执行&#xff0c;或者设置定时执行&#xff0c;从而简化我们的工作。 功能介绍 官方文档地址&#xff1a;Getting started | Au…

长期使用老旧、劣质、不合格电源线的危害有多大?

电源线作为电力、信息传输的重要工具&#xff0c;如今已经成为人类生活生产必不可少的产品之一&#xff0c;电气装备、电器照明、通信、家装、工业生产等多个行业&#xff0c;电源线都发挥着重要的载体作用。由于市场上电源线产品品类繁多&#xff0c;价格、品质参差不齐&#…

深度态势感知的含义

深度态势感知的含义 当年德国对苏联发动的侵略战争&#xff0c;本来是两个大国内讧的结果。这次入侵完全是希特勒和最高统帅部几个人就决定了的。他们是怎样对待关于苏联的情报呢&#xff1f;英国人写的《苏德战争》中有这样描述&#xff1a;"很多真实的情报对元首来说则毫…

六要素超声波微气象仪一款气象监测设备

WX-WQX6 随着科技的发展&#xff0c;人们对天气的预测和掌控能力越来越强。在这个领域&#xff0c;六要素超声波微气象仪以其精准、实时的气象监测能力&#xff0c;赢得了众多关注。这款仪器不仅可以实时监测温度、湿度、风速、风向、气压和雨量六个气象要素&#xff0c;还可以…

OFI libfabric原理及应用解析

Agenda 目录/议题 编译通信软件硬件和软件带来的挑战为什么需要libfabriclibfabric架构API分组socket应用 VS libfabric应用区别GPU数据传输示例 编译通信软件 可靠面向连接的TCP和无连接的数据报UDP协议高性能计算HPC或人工智能AI 软硬件复杂性带来的挑战 上千个节点的集群, …

SpringSecurity+JWT权限认证

SpringSecurity默认的是采用Session来判断请求的用户是否登录的&#xff0c;但是不方便分布式的扩展 虽然SpringSecurity也支持采用SpringSession来管理分布式下的用户状态&#xff0c;不过现在分布式的还是无状态的Jwt比较主流 一、创建SpringBoot的项目 spring-boot-starte…

buildAdmin 后端控制器的代码分析

buildAdmin的代码生成&#xff0c;很像是 fastadmin 的生成模式&#xff0c;当我们利用数据库生成了一个控制器的时候&#xff0c;我们可以看到&#xff0c; 它的生成代码很简洁 <?phpnamespace app\admin\controller\askanswer;use app\common\controller\Backend;/*** 回…

在Spring Boot中使用Thymeleaf开发Web页面

引言&#xff1a; 为啥写这篇文章呢&#xff1f;我明明就没怎么用过这个Thymeleaf进行web开发&#xff0c;用JSP也行&#xff0c;三剑客也行&#xff0c;或者Vue&#xff0c;React&#xff0c;PHP等等&#xff0c;不好吗&#xff1f; 那我为啥写这篇博客呢&#xff1f;这个写了…

1445 雉兔同笼

Tint(input()) for i in range(T):s input().split()head int(s[0])foot int(s[1])rabbitfoot/2-headchicken2*head-foot/2if rabbit>0 and chicken>0 and rabbit.is_integer():print(int(chicken),int(rabbit))else:print(-1)

Playcanvas后处理-辉光bloom

&#xff08;一&#xff09;Bloom介绍 Bloom&#xff08;辉光、光晕、泛光&#xff09;是一种常见的摄像机后处理&#xff08;PostProcessing&#xff09;效果&#xff0c;用于再现真实世界相机的成像伪影。这种效果会产生从图像中明亮区域边界延伸的光条纹&#xff08;或羽毛…

亚马逊车灯外贸出口CE认证标准办理解析

车灯是车辆夜间行驶在道路照明的工具&#xff0c;也是发出各种车辆行驶信号的提示工具。车灯一般分为前照灯、尾灯、转向灯等。车灯出口欧盟需要办理CE认证。 CE认证是欧盟对进入欧洲市场的产品强制性的认证标志&#xff0c;是指符合欧盟安全、健康、环境保护等标准和要求的产…

美容仪器经营小程序商城的作用如何

美容仪器可以包含剃须刀、微针仪、微晶笔等&#xff0c;除了美容美业机构需要外&#xff0c;在家庭中也有不小的需求&#xff0c;对产品经营商家来说除了满足客户线下订购的需求外&#xff0c;还需要线上拓展更广的客群及多场景客户在线消费。 入驻第三方平台是商家们首先考虑…

mricorn 手动勾画ROI并保存为模版的方法步骤

mricorn软件手动勾画ROI&#xff1a; 这里拿一个做了切除手术的癫痫病人举例子&#xff0c;我们需要把切除区域勾画出来并保存成切除的模版。 1、将图像导入到mricorn中 2、逐层勾画ROI并填充 比较方便的是从切除区域的起始层进行勾画&#xff0c;这里为了方便展示只勾画中间…

【操作系统】文件系统之文件共享与文件保护

文章目录 文件共享硬链接软链接 文件保护口令保护加密保护访问控制 文件共享 为了实现文件的共享&#xff0c;引入了“计数器”字段&#xff0c;当一个文件每被一个用户所共享&#xff0c;那么计数器就加一。如果一个用户删除文件&#xff0c;计数器相应的减一。如果计数器为0…

ITIL® 4 Foundation​,即将开课~想了解点击查看

ITIL 4 Foundation 即将开课~ 想报名的必须提前预约啦 &#x1f447;&#x1f447;&#x1f447; 2 0 23 年 培训地点&#xff1a; 远程直播&#xff1a;线上平台学习 开课时间&#xff1a; 周末班&#xff1a;11月25日、26日&#xff1b; 什么是ITIL&#xff1f; 信息技…

数据仓库架构之详解Kappa和Lambda

目录 一、前言 二、架构详解 1 Lambda 架构 1.1 Lambda 架构组成 1.2 Lambda 特点 1.3 Lambda 架构的优点 1.4 Lambda 架构的不足 2 Kappa 架构 2.1 Kappa 架构的核心组件 2.2 Kappa 架构优点 2.3 Kappa 架构的注意事项 三、区别对比 四、选择时考虑因素 一、前言 …

鸿蒙原生应用/元服务开发-AGC分发如何配置版本信息(上)

1.配置HarmonyOS应用的“发布国家或地区”。 2.设置是否为开放式测试版本。 注意&#xff1a;HarmonyOS应用开放式测试当前仅支持手机、平板、智能手表。如开发者想发布为开放式测试版本&#xff0c;选择“是”。正式发布的版本请选择“否”。 3.在“软件版本”下点击“软件包…

商品购物管理与推荐系统Python+Django网页界面+协同过滤推荐算法

一、介绍 商品管理与推荐系统。本系统使用Python作为主要开发语言&#xff0c;前端采用HTML、CSS、BootStrap等技术搭建显示界面&#xff0c;后端采用Django框架处理用户的请求响应。 创新点&#xff1a;使用协同过滤算法&#xff0c;以用户对商品的评分作为依据&#xff0c;在…