STM32寄存器点亮LED灯

这篇具有很好参考价值的文章主要介绍了STM32寄存器点亮LED灯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一: 如何寄存器点灯

1:看单片机的原理图 找到LED灯

stm32寄存器点亮led,stm32,嵌入式硬件,单片机

 这个灯是 PB5引脚

看原理图可以看出 让GPIOB5输出低电平 就能点亮
那么我们得让
打开控制GPIOB5的时钟
让GPIOB5 输出模式
让GPIOB5低电平

二:看中文参考手册配置寄存器

2.1:打开管 GPIOB5的时钟

时钟就相当于一个阀门开关,或者理解成水龙头,你打开了 才有水出来,也就是你打开才能工作。

看中文参考手册 系统架构 找到你的GPIOB 看看是谁管的。

stm32寄存器点亮led,stm32,嵌入式硬件,单片机

 找到时钟的起始地址 也称为 基地址

stm32寄存器点亮led,stm32,嵌入式硬件,单片机

 由于是APB2管 我们也要找到 APB2外设时钟使能寄存器的偏移地址

stm32寄存器点亮led,stm32,嵌入式硬件,单片机

 要打开GPIOB5的时钟

时钟起始地址 + APB2外设时钟使能寄存器的偏移地址 = 控制GPIOB5的时钟的寄存器地址
0x4002 1000 + 0x18 = 0x4002 1018

如何打开呢 再中文参考手册继续参考

stm32寄存器点亮led,stm32,嵌入式硬件,单片机

 stm32寄存器点亮led,stm32,嵌入式硬件,单片机

在位3 中 1 为打开端口C时钟
那么我们就是 不改变其他位的情况下 用或 运算即可。

//打开时钟
*(unsigned int *)0x40021018 |= 0x01 << 3;    //(左移四位)

2.2:配置GPIOB5 为输出模式

1.找到GPIOB 的起始地址 (基地址)

stm32寄存器点亮led,stm32,嵌入式硬件,单片机

 GPIOB 的起始地址:0X4001 0C00

2.找到端口配置高寄存器偏移地址:

偏移地址:0x04

stm32寄存器点亮led,stm32,嵌入式硬件,单片机

 0X4001 0C00 + 0x00 = 0x4001 0C00

设置成推挽输出 以及 输出模式 设置最大为10MHz:

//设置端口为输出模式,速率为10MHz,推挽输出模式    PB5
*(unsigned int*)0x40010C00 |= 0x01<<20;   //左移20位

2.3:让GPIOB5引脚输出低电平

1.找到端口输出数据寄存器

stm32寄存器点亮led,stm32,嵌入式硬件,单片机

偏移值:0x0c
在不影响其他位数据时,我们想让第5位输出低电平

//设置GPIOB5低电平 
*(unsigned int*)0x40010C0C  &= ~(1<<5);    //左移5位,输出0,led灯亮

 

完整代码:

#include "stm32f10x.h"                  // Device header


int main()
{
     //使能GPIOB时钟
    *(unsigned int*)0x40021018 |= (1<<3);  //左移3位   
     //使能GPIOE时钟
    *(unsigned int*)0x40021018 |= (1<<6);    //左移6位
    
    
    //设置端口为输出模式,速率为10MHz,推挽输出模式    PB5
    *(unsigned int*)0x40010C00 |= 0x01<<20;   //左移20位
    
     //设置GPIOB5低电平 
    *(unsigned int*)0x40010C0C  &= ~(1<<5);    //左移5位,输出0,led灯亮
    
    //设置GPIOB5高电平
   // *(unsigned int*)0x40010C0C  |= (1<<5);    //左移5位,输出0,led灯灭
    
     //设置端口为输出模式,速率为2MHz,推挽输出模式    PE5
    *(unsigned int*)0x40011800  |= (0x02<<20);
    
     //设置GPIOE5低电平 
     *(unsigned int*)0x4001180C  &= ~(1<<5);    左移5位,输出0,led灯亮
    
    
}


//为了编译不报错
void SystemInit()
{


}

 文章来源地址https://www.toymoban.com/news/detail-724051.html

到了这里,关于STM32寄存器点亮LED灯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32G0x0系列-点亮一盏灯(寄存器)

    目录 输入功能 浮空输入:通俗讲就是让管脚什么都不接,悬空着。 上拉输入 下拉输入 模拟输入 输出功能 开漏输出 推挽输出 相关寄存器 GPIOx_MODER 端口模式寄存器 GPIOx_OTYPER 端口输出类型寄存器 GPIOx_ OSPEEDR 端口输出速度寄存器 GPIOx_PUPDR 上拉/下拉寄存器 GPIOx_IDR 端口输入数据

    2024年02月06日
    浏览(27)
  • 【ARM裸机编程 | 海思SS528】- 操作 GPIO 寄存器输出低电平点亮 LED 灯

    这篇文章主要介绍在 海思SS528 开发板,去操作某个 GPIO 寄存器输出高、低电平,来熄灭或点亮 LED 灯。 首先,了解一下 ARM裸机编程 ,也就是在一块没有移植操作系统的ARM开发板去编程,相当于把它当成单片机去使用,很多与硬件相关的操作都需要直接读写该硬件的寄存器。

    2024年02月10日
    浏览(20)
  • 嵌入式学习笔记——STM32的USART相关寄存器介绍及其配置

    上一篇中,对串口做了个概述,主要是介绍了串口通信的特征,异步串行全双工通信,然后就是结合串口的框图梳理了一下STM32中USART的配置流程以及发送接收数据的流程,本文将接着上篇的内容,对串口的寄存器做个介绍,然后实现一个简单的收发实验。 根据之前GPIO的经验

    2024年02月05日
    浏览(21)
  • 嵌入式-stm32-用PWM点亮LED实现呼吸灯

    答:LED需要低电平才能亮,高电平是灯灭。 答:这是用到不同占空比来实现的,控制LED实现呼吸灯,就是通过占空比的高低电平和其持续时间来实现。 ①例如,要定时500ms,则:PSC=7199,ARR=4999,Tclk=72Mhz。 ②假如频率为 2kHz ,则:PSC=71,ARR=499, 频率和周期是描述波形的两个基

    2024年02月03日
    浏览(21)
  • 【蓝桥杯嵌入式】点亮LED灯,流水灯的原理图解析与代码实现——STM32

    🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都在这儿哦,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏 🪔本系列专栏 -  蓝桥杯嵌入式_勾栏听曲_0的博客 🍻欢迎大家  🏹  点赞👍  评论📨  收藏⭐️ 📌个人主

    2024年02月03日
    浏览(23)
  • stm32的BRR寄存器和BSRR寄存器

    1、BRR---   bit   RESET(置0)  register   //高16位无,低16位置1为0,不能写1 2 、BSRR---   bit   SET(设置1或0)       register   //低16位设置1为0 BSRR:用于低16位的作用是让指定的IO口置1;而高16位的作用是让指定的IO口置0。  

    2024年02月11日
    浏览(22)
  • STM32之寄存器

    在学习STM32之前有必要了解一下ARM架构,以下相关ARM架构的知识来自百度百科​:​ ARM架构,曾称进阶精简指令集机器(Advanced RISC Machine)更早称作Acorn RISC Machine,是一个32位精简指令集(RISC)架构。还有基于ARM设计的派生产品,重要产品包括Marvell的XScale架构和德州仪器的

    2024年02月22日
    浏览(24)
  • STM32 入门 —— 寄存器与 GPIO

    STM32 总线构图: 什么是寄存器 根据百度百科介绍,寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。简单来说,寄存器就是存放东西的东西,存放的东西是指令、数据或地址 存放数据的寄存器最容易理解,不同

    2024年02月04日
    浏览(27)
  • STM32存储器映射以及寄存器映射

    目录 1.STM32的寻址范围? 2.存储器映射 3.存储器功能划分(以STM32F1为例) 4.寄存器映射 1.32位单片机有32根地址线,每根地址线有两种状态,导通或者不导通。 2.单片机内存地址访问的存储单元是按字节编址的,而不是bit。 比如我们要访问0x01这个地址,访问的其实是一个字节的空

    2024年04月23日
    浏览(23)
  • STM32的GPIO操作(寄存器&HAL)

    (注:此为乐某学习记录,若有出错的地方欢迎各位指出!) 本人使用的开发板的芯片是STM32H743XIH6,所以外设也是根据此芯片来介绍。 在使用HAL库配置的时候,需要安装STM32CubeMX。此软件可在ST官网下载,剩下的安装步骤比较简单,不会单独出篇进行讲解。 STM32CubeMX下载网址

    2024年02月04日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包