stm32第一节:认识寄存器(野火指南者——STM32F103VET6)

这篇具有很好参考价值的文章主要介绍了stm32第一节:认识寄存器(野火指南者——STM32F103VET6)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

stm32第一节:认识寄存器

初识STM32

        STM32芯片架构

                Cortex-M3内核(arm)——(I,S,D)——总线矩阵——外设,Flash,SRAM

                外设——GPIO,USART,12C,SPI……

        Flash及SRAM储存

                Flash——常量

                SRAM——变量

        DMA作用

                DMA解决了数据传输需要经过CPU的问题。使用DMA可以使CPU闲置下来,从而实现                    更高的效率。

寄存器

        储存器分类及其地址(blockx(x=0~7))

                32位操作系统,共为2^32=4GB空间,平均分给8个储存器Block0~7。

                Block 0        Code                                         0x0000 0000 ~ 0x1FFF FFFF(512MB)
                Block 1        SRAM                                       0x2000 0000 ~ 0x3FFF FFFF(512MB)
                Block 2        片上外设                                   0x4000 0000 ~ 0x5FFF FFFF(512MB)
                Block 3        FSMC的bank1 ~ bank2            0x6000 0000 ~ 0x7FFF FFFF(512MB)
                Block 4        FSMC的bank3 ~ bank4            0x8000 0000 ~ 0x9FFF FFFF(512MB)
                Block 5        FSMC寄存器                             0xA000 0000 ~ 0xCFFF FFFF(512MB)
                Block 6        没有使用                                   0xD000 0000 ~ 0xDFFF FFFF(512MB)
                Block 7        Cortex-M3 内部外设                 0xE000 0000 ~ 0xFFFF FFFF(512MB)

        什么是储存器映射

                给储存器分配地址的过程称为储存器映射,再次分配地址叫做重映射

        什么是寄存器

               给有特定功能的内存单元取一个别名,取其别名为寄存器

        什么是寄存器映射

                给有特定功能的,已经分配好地址的内存单元取别名的过程就叫寄存器映射

                eg1:让GPIO端口的16个引脚输出高电平,如何实现?

                        通过绝对地址访问内存单元

                        1        // GPIOB 端口全部输出高电平

                        2        *(unsigned int*)(0x4001 0c0c)=0xFFFF;

                        系统无法识别0x4001 0c0c。要将其转为int类型的指针变量,然后再将指针变量再                          次转化为指针地址。那么,通过51单片机的学习,我们知道,可以使用宏定义对该                          指令进行改进:

                        1        #define        GPIOB_ODR        *(unsigned int*)(0x4001 0c0c)

                        2        GPIOB_ODR =0xFFFF;

STM32寄存器映射

        基线总地址

                APB1        0x4000 0000  相对偏移  0x0

                APB2        0x4001 0000  相对偏移  0x0001 0000

                AHB          0x4001 8000  相对偏移  0x0001 8000

        eg2:GPIO基地址

                外设基地址  0x4000 0000。GPIOx,随着x的增加,就多占用8个字节的空间内存。

                GPIOA        0x4001 0800

                GPIOB        0x4001 0c00

                ……                ……

                GPIOG        0x4001 2000

C语言对寄存器的封装 

        总线和外设基地址宏定义:
        # define    PERIPH_BASE    ((unsigned int) 0x4000 0000)    
        # define    APB1_BASE        PERIPH_BASE    
        #define     APB2_BASE        (PERIPH_BASE+0x0001 0000)    
        #define     AHB_BASE          (PERIPH_BASE+0x0002 0000)

        
        +外设偏移地址       
        +寄存器偏移地址

        PB0输出高低电平:
        GPIOB-ODR&=~(1<<0);        低电平

        GPIOB-ODR |=(1<<0);             高电平

总结

        本节课主要是认识寄存器。包括认识STM32的芯片架构以及各部分之间的作用,包括储存器分类及其地址,储存器的映射及重映射,寄存器的映射,基线总地址,外设基地址及其宏定义以及如何输出高低电平,下节课认识使用结构体封装寄存器列表,还有使用寄存器编写程序。文章来源地址https://www.toymoban.com/news/detail-833704.html

到了这里,关于stm32第一节:认识寄存器(野火指南者——STM32F103VET6)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • STM32寄存器点亮LED灯

     这个灯是 PB5引脚 看原理图可以看出 让GPIOB5输出低电平 就能点亮 那么我们得让 打开控制GPIOB5的时钟 让GPIOB5 输出模式 让GPIOB5低电平 时钟就相当于一个阀门开关,或者理解成水龙头,你打开了 才有水出来,也就是你打开才能工作。 看中文参考手册 系统架构 找到你的GPIO

    2024年02月07日
    浏览(48)
  • STM32 寄存器配置笔记——GPIO配置输出

           本文主要介绍GPIO 作为输出时的寄存器配置。包括时钟配置,输出模式配置。以STM32F10xxx系列为例,配置PA8、PD2端口作为输出,输出高/低电平。         1)GPIO外设时钟          通过查找STM32F10xxx中文参考手册得知,GPIO PORT口的时钟配置在RCC_APB2ENR寄存器的第2~6位,

    2024年01月24日
    浏览(66)
  • STM32的GPIO操作(寄存器&HAL)

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

    2024年02月04日
    浏览(49)
  • STM32-ADC电压采样实验(寄存器版)

    STM32F10X系列支持三路ADC,其ADC通道及对应IO口如下表所示: 其能接受的电压输入范围一般为0-3.3V(V REF- ≤ V IN ≤ V REF+ ),因此,如果需要测量超出0-3.3v量程范围的电压数据,需要在外围硬件增加分压电阻,将电路转换到0-3.3V量程范围内再进行采集。 这里用于做ADC采集的引脚使

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

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

    2024年04月23日
    浏览(46)
  • keil5 查看stm32 寄存器的值

    1 查看芯片内部寄存器的值,首先是在仿真状态下,首先仿真,程序运行。 2 点击菜单栏的 View - System viewer ,右侧便会出现芯片的所有寄存器(如果没有,需要添加),点击要查看的寄存器,便会出现在侧边栏上 可以查看值,也可以直接设置寄存器的值。 3 如果没有出现,如下

    2024年01月24日
    浏览(49)
  • STM32 寄存器操作 GPIO 与下降沿中断

    寄存器本质就是一个开关,当我们把芯片寄存器配置指定的状态时即可使用芯片的硬件能力。 寄存器映射表则是开关的地址说明。对于我们希望点亮 GPIO_B 的一个灯来说,需要关注以下的两个寄存器:   对于我们实现希望点亮一个灯的需求来说,不仅需要配置配置 GPIO_B 的时

    2024年02月20日
    浏览(50)
  • STM32微机系统框架、内存、存储器、寄存器

    大家好,我是 杰哥嵌入式开发 最近在出定时器系列, 但是线下班有一些学生在学习完C语言之后, 在51接触各种寄存器和对软件代码各种操作是如何在单片机系统中起到作用的感到非常的不解, 经过我的初步分析,是对嵌入式微机系统的大概雏形系统框架不熟悉导致。 所以

    2024年02月06日
    浏览(55)
  • 【STM32调试】寄存器调试不良问题记录持续版

    记录一些stm32调试过程中:不易被理解、存在使用误区、不清不楚、是坑、使用常识等方面的一些记录。本记录只包含stm32的内核以及外设等寄存器的调试,不包含业务方面。 使用低功耗功能前是否需要打开PWR时钟? 是需要先打开PWR时钟的,否则无法唤醒。 睡眠模式、停机模

    2024年01月18日
    浏览(56)
  • 深度理解STM32的串口实验(寄存器)【保姆级教程】

    USART—通用同步异步收发接收器,是一个串行通信设备,可以和外部设备进行灵活的全双工数据交换,有别于USART还有一个UART(在原来的基础上裁剪掉了同步通信功能(时钟同步)),串行通信一般是以帧格式传输数据,一帧一帧的传。 协议层: 串口通信的一个数据包包含从

    2023年04月15日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包