stm32 各头文件或C文件功能

2023-05-16

     stm32f10x_con.h

         配置文件:加载哪个外设、使能assert 对参数进行检查,如果使能了assert 需要在main文件中添加 _assert_faild 函数。 使能assert会增大编译出执行文件的大小,调试完后可以将assert 屏蔽。

stm32f10x.h头文件中包含了stm32f10x_conf.h 。

 


   stm32f10x.h

          1、对所有的外设的地址进行映射,映射到存储区,即定义某外设结构体变量,因为结构体是连续存储的只要将外设的基地址强制转换为结构体类型的指针,那么该外设的寄存器就可以通过指针进行访问,以GPIO为例:

定义外设的结构体,结构体变量都是volatile类型,告诉编译器不要进行优化,读取值从内存读取不要读缓存。

typedef struct
{
  __IO uint32_t CRL;
  __IO uint32_t CRH;
  __IO uint32_t IDR;
  __IO uint32_t ODR;
  __IO uint32_t BSRR;
   __IO uint32_t BRR;
  __IO uint32_t LCKR;
} GPIO_TypeDef;

     GPIO外设的地址

            #define PERIPH_BASE           ((uint32_t)0x40000000)                     //外设别名区的基地址

            #define APB2PERIPH_BASE       (PERIPH_BASE + 0x10000)        // APB2外设总线上寄存器的基地址,GPIO挂在APB2总线上

           // GPIO外设的地址

   #define GPIOA_BASE            (APB2PERIPH_BASE + 0x0800)
   #define GPIOB_BASE            (APB2PERIPH_BASE + 0x0C00)
   #define GPIOC_BASE            (APB2PERIPH_BASE + 0x1000)
   #define GPIOD_BASE            (APB2PERIPH_BASE + 0x1400)
   #define GPIOE_BASE            (APB2PERIPH_BASE + 0x1800)
   #define GPIOF_BASE            (APB2PERIPH_BASE + 0x1C00)
   #define GPIOG_BASE            (APB2PERIPH_BASE + 0x2000)

  // 将外设地址强制转化为结构体的指针,然后就可以通过指针GPIOx区访问某个端口中的寄存器

  #define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)
  #define GPIOB               ((GPIO_TypeDef *) GPIOB_BASE)
  #define GPIOC               ((GPIO_TypeDef *) GPIOC_BASE)
  #define GPIOD               ((GPIO_TypeDef *) GPIOD_BASE)
  #define GPIOE               ((GPIO_TypeDef *) GPIOE_BASE)
  #define GPIOF               ((GPIO_TypeDef *) GPIOF_BASE)
  #define GPIOG               ((GPIO_TypeDef *) GPIOG_BASE)


       2、外设寄存器位的定义


    core_cm3.c文件

 内核相关的变量和函数的定义:NVIC、systick、MPU(有的MCU没有)、调试组件

 1、NVIC相关的变量和函数。

    中断向量的使能_(我理解相当于全局中断的使能)

    中断向量的禁止

    中断向量的挂起

    清除挂起的中断

    设置中断的优先级

            读取中断的优先级

  2、systick定时器的配置,static __INLINE uint32_t SysTick_Config(uint32_t ticks);用来使能中断、开启systick定时器。

系统滴答定时器的配置,具体的systick 的介绍在cortex-m3 技术手册中有介绍。     

  system_stm32f10x.c   

        1、 时钟的频率,系统时钟的初始化,在最后设置了中断向量表的基地址和偏移地址:

SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET;       

当在MDK中改变烧写程序IROM的地址时FLASH_BASE 的地址要改为IROM的地址,如果改为函数void NVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset);修改NVIC_VectTab_FLASH 的地址,实际上这两种设置向量表的方法是一样的,都要修改向量表的基地址。        

       偏移量默认偏移量是0,从代码区启动则向量表的地址0x0800 0000,0x0800 0000保存的是堆栈栈顶的地址,代码区的烧写地址在MDK软件中设置。 

           IAP远程升级能用到这部分的内容,可以参考正点原子的教程。

               

   misc.c      

    1、void NVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset);函数用来设置中断向量表的位置:SRAM or Flash 默认是在Flash中,偏移量必须是0x200的整数倍。

  2、NVIC中断管理的函数,使能、分组等。

   3、SCB  system control block 系统控制块

       系统控制块结构体包含了:


  startup_stm32f10x_md.s

   启动文件,启动文件中定义了该类型MCU堆的大小和栈的大小,还有中断向量表。中断向量表通过伪指令分配了各个中断入口函数,在程序进行链接时就会把中断向量表中伪指令中断函数分配实际的flash地址。

   

     



              

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

stm32 各头文件或C文件功能 的相关文章

  • 一飞智控CEO齐俊桐:一篇文章教你看透无人机飞控这十年

    origin http www leiphone com news 201702 YO2bskI7smE1U8TA html 无人机 又一个被国人玩坏了的单词 科幻电影里的无人机 10年前说自己是搞无人机的 xff0c 无不引来疑惑和赞叹的
  • 机器人框架

    ROS Rock Yarp Orocos
  • 列王的纷争-深度传感器已被巨头瓜分?

    origin http mt sohu com 20170325 n484729546 shtml 我们常常说苹果富可敌国 但是你这么说其实是在侮辱苹果 苹果可比美国政府有钱多了 根据最新消息 xff0c 美国政府账上的现金 xff0c 只
  • 不得不看!国内深度摄像头方案大起底

    origin http pieeco baijia baidu com article 517947 引言 xff1a 市场对深度视觉技术需求趋于井喷 xff0c 但可以提供产品和方案的公司寥寥无几 xff0c 本文分析了国内三家各具特点的
  • VR中的9轴传感器(重力加速度/陀螺仪/磁力计)

    origin http blog csdn net dabenxiong666 article details 53836503 前言 传感器的调试过程 xff0c 一般根据原厂提供demo代码 xff0c 调试数据接口 xff0c 将数据
  • STM32中AD采样的三种方法分析

    在进行STM32F中AD采样的学习中 xff0c 我们知道AD采样的方法有多种 xff0c 按照逻辑程序处理有三种方式 xff0c 一种是查询模式 xff0c 一种是中断处理模式 xff0c 一种是DMA模式 三种方法按照处理复杂方法DMA
  • 神经网络:比原来更容易学习了

    origin http geek csdn net news detail 195039 原文 xff1a NEURAL NETWORKS YOU VE GOT IT SO EASY 作者 xff1a Steven Dufresne 翻译
  • NuttX 编译系统

    origin http blog csdn net zhumaill article details 24400441 xff08 嵌入式 实时操作系统 rtos nuttx 7 1 makefile xff09 NuttX 编译系统 转载
  • NuttX 启动流程

    origin http blog csdn net zhumaill article details 23261543 xff08 嵌入式 实时操作系统 rtos nuttx 7 1 stm32 源代码分析 xff09 NuttX 启动流程
  • nuttx操作系统的移植以及下载

    origin http blog csdn net seawolfe article details 70244672 1 在ubuntu根目录下 xff1a root 64 ubuntu apt get update 更新包 2 root
  • 机器人峰会厂商

    origin http www chinarobtop com exhibition exhibition php 埃夫特 清能德创 芜湖瑞思 芜湖哈特 山东帅克机械 宁波慈兴轴承 A6 成都卡诺普 绿的谐波
  • 机器人公司

    1 螺趣科技 2 米兔机器人 3 360
  • 解:高性能MEMS IMU解决方案-ADXRS290

    origin https ezchina analog com message 34890 对于复杂且高动态惯性配置的MEMS IMU应用 xff0c 评估功能时需要考虑许多属性 在设计周期早期评估这些属性优于追逐开放性成果 xff0c 从
  • 关于DIY电池均衡器--被动均衡---蓄电池--电瓶车电池组电压均衡的经历

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 前言 随着电动车长时间的反复使用 xff0c 电池参数难免会发生变化 xff0c 当电池组中各节电池参数不一时 xff0c 便会出现充电时
  • CMakeLists.txt与Makefile 的区别

    我平时一般是在windows使用VS编程 xff0c 但是偶尔在网上查资料的时候也会下载一些别人的代码 xff0c 其中就经常对CMakeLists txt和Makefile文件产生疑惑 xff0c 下面我来分析一下这两个经常使用的地方 C
  • 链接提示 extern "C"

    在 C 43 43 中调用 C 代码时 xff0c 需要给编译器指定 xff23 代码要按照 xff23 语言的编译器编译 xff0c 否则编译器会将 xff23 代码按照默认的C 43 43 编译器来编译 xff23 代码 xff0c 这
  • C/C++实现你的浪漫表白:浪漫流星雨表白程序,

    想要讨女朋友欢心也巩固自己所学的知识 xff0c 各位小伙伴有自己的想法了吗 xff1f 准备好想要怎样实施了吗 xff1f 有什么美好的计划了吗 xff1f 如果没有的话那么别慌 xff0c 我知道 xff0c 在座的各位肯定都是有自己的
  • DDR4原理及硬件设计

    DDR4 DRAM的工作原理 其引脚按照功能可以分为7类 xff1a 前3类为电源 地 配置 后4类为 xff1a 控制信号 时钟信号 地址信号 数据信号 电源 地 配置信号的功能很简单 xff0c 在此不赘述 控制信号主要是用来完成DDR
  • RK3568最小系统四层板设计总结

    很久没有关注DDR4和DDR5相关知识了 xff0c 利用找工作在家休息间隙从网上下载了RK3568的原理图和6层板的PCB参考设计 xff0c 将6层板改为4层板设计 进行总结之前 xff0c 先将设计时关于Allegro设计小技巧进行总
  • 部门管理经验小结

    很久没有针对管理做总结了 xff0c 回武汉后一直做工程师 xff0c 现对管理知识体系进行总结 xff1a 部门管理按照如下框图1所示 图1

随机推荐