完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
/**这里是STM32比较重要的头文件
*************************************** **************************************** * @file stm32f10x.h ST 标准的头文件 * @author MCD Application Team 微控制器开发小组。 * @version V3.5.0 版本 * @date 11-March-2011 2011年3月11 * @brief CMSIS Cortex-M3 Device Peripheral Access Layer Header File.(CMSIS:Cortex Microcontroller Software Interface Standard)是Cortex-M处理器系列的与供应商网络的硬件抽象层。 *该文件包含所有外围寄存器的定义、位 * STM32F10x 连接线的定义和内存映射, * 高密度、高密度价值线、中密度、 * 中密度价值线、低密度、低密度价值线 * 和 XL 密度器件。 *文件这个所有游戏了芯片STM32F10X(接口增强型)内部的寄存器定义,位定义,内存地址变换定义,还有一些相应的高密度,低密度产品线的设备。 *文件是唯一的包括文件,该应用程序员 * 在 C 源代码中使用,通常在 main.c 中。该文件包含: * - 允许选择的配置部分: * - 目标应用程序中使用的设备 * - 在应用程序代码中使用或不使用外围设备驱动程序(即 * 代码将基于对外围设备寄存器的直接访问 * 而不是驱动程序 API),此选项由 *“#define USE_STDPERIPH_DRIVER”控制 * - 更改一些特定于应用程序的参数,例如 HSE * 晶振频率 * - 数据结构和所有外围 设备的地址映射* - 外围设备的寄存器声明和位定义 * - 访问外围寄存器硬件的宏 * 这个文件在应用程序中是用组件的头文件,它是 C 代码写成。 通常包括在 MAIN主程序中。它包括: 1 设备中的目标应用程序。 2 决定是否使用外部设备的代码(例如使用基础使用接口的代码,而不是我们所知道的 API 应用接口代码)。这些设备可以通过设置 “#define USE_STDPERIPH_DRIVER” 来实现。 3 通过此文件外部设备的参数参数。 4 程序的数据结构以及外部的了解地址映射。 5外部的设计参数和位置可以在这个文件里面定义。 ***** ****************************************************** ************************ * @attention * * 目前的固件仅供指导,旨在为客户提供 * 包含有关其产品的编码信息,以便于他们可以节省 * 时间。因此,STMICROELECTRONICS 不对任何 *直接、间接或后果性损害负责,这些损害涉及*由此类 固件的内容和/或客户在 * 编码信息相关信息中进行的使用引起的任何索赔他们的产品。 *注意:此文件代码提供给用户,目的是帮助用户提高效率节省时间。ST 将不会提供任何用户自己代码的解释和帮助。也不会解决其在代码中的任何错误。 * 《h2 》《center》© COPYRIGHT 2011 STMicroelectronics《/center》《/h2》 ************************************ ************************************************ */ /** @ addtogroup CMSIS *@{ /的不需要关心,只是说明这个文件作者,公司产品等等,你贴出来的估计是水广而告之,也是编写者的一点*宝宝知识嘛 / ** @addtogroup stm32f10x * @ { * / 的#ifndef __STM32F10x_H //如果没有定义__STM32F10x_H,则定义__STM32F10x_H 的#define __STM32F10x_H 的#ifdef __cplusplus // 外部的“C”{ #ENDIF 这里是一种条件编译.extern“C “指令非常特殊,因为C和C++的近亲关系。任何语言,如Fortran、汇编等。 还有要说明的是,extern ”C“ 只需要指定编译和连接规约,但不影响声明。 ** @addtogroup Library_configuration_section * @{ */ /* 根据 应用中 使用的目标 STM32 设备取消注释以下行 */ #if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL)&&定义(STM32F10X_HD)&&定义(STM32F10X_HD_VL)&&定义(STM32F10X_XL)&&定义(STM32F10X_CL)!! / *#定义STM32F10X_LD * / / * 《STM32F10X_LD:STM32低密度装置* / / *#定义STM32F10X_LD_VL */ /*!《 STM32F10X_LD_VL: STM32 低密度超值系列器件 */ /* #define STM32F10X_MD */ /*!《 STM32F10X_MD:STM32 中密度器件 */ /* #define STM32F10X_MD_VL */ /*!《 STM32F10X_MD_VL: STM32 中密度超值线设备 */ /* #define STM32F10X_HD */ /*!《 STM32F10X_HD: STM32 高密度设备 */ /* #define STM32X_MD_VL */ /* #define STM32F10X_HD */ 《 STM32F10X_HD_VL: STM32 高密度价值线器件 */ /* #define STM32F10X_XL */ /*!《 STM32F10X_XL: STM32 XL 密度器件 */ /* #define STM32F10X_CL */ /*!《 STM32F10X_XL 线器件 */ /*!《 #endif STM32启动文件选择: - startup_stm32f10x_ld_vl.s:用于 STM32 低密度值线器件 - startup_stm32f10x_ld.s:用于 STM32 低密度器件 - startup_stm32f10x_md_vl.s:用于 STM32 中密度值线器件 - startup_stm32f10x_md.s:中等密度 STM32d.s.startup_stm32f10x_m3d 器件STM32高密度器件-startup_stm32f10x_xl.s:用于STM32 XL密度器件-startup_stm32f10x_cl.s:用于STM32连接线器件 cl:互联型产品,stm32f105/107系列 vl:超高值型产品,stm32f100产品系列, xl: stm32f101/103系列 ld:低密度产品,FLASH小于64K md:中等密度产品,FLASH=64 or 128 hd:高密度产品,FLASH大于128 /* 提示:为了避免每次需要在这些之间切换时修改这个文件 设备,你可以在你的工具链编译器预处理器中定义设备。 提示:为了避免每次编译都需要修改这些文件,英文是使用编译器的预处理器选项来定义芯片型号等,免得编程可以更新这个文件。。。. - 低密度设备是 STM32F101xx、STM32F102xx 和 STM32F103xx 微控制器 ,其中闪存密度介于 16 和 32 KB 之间。 - 低密度超值系列器件是 STM32F100xx 微控制器,其中闪存 密度介于 16 和 32 KB 之间。 - 中密度设备是 STM32F101xx、STM32F102xx 和 STM32F103xx 微控制器,这里定义的是各种产品线的 FLASH 的大小。 其中 Flash 存储器的密度范围在 64 到 128 KB 之间。 - 中等密度超值系列设备是 STM32F100xx 微控制器,其中 闪存密度介于 64 到 128 KB 之间。 - 高密度设备是 STM32F101xx 和 STM32F103xx 微控制器,其中 闪存密度介于 256 和 512 KB 之间。 - 高密度超值系列设备是 STM32F100xx 微控制器,其中 闪存密度介于 256 和 512 KB 之间。 - XL 密度设备是 STM32F101xx 和 STM32F103xx 微控制器,其中 闪存密度介于 512 和 1024 KB 之间。 - 连接线设备是 STM32F105xx 和 STM32F107xx 微控制器。 */ #如果!定义(STM32F10X_LD)&&!定义(STM32F10X_LD_VL)&&!定义(STM32F10X_MD)&&!定义(STM32F10X_MD_VL)&&!定义(STM32F10X_HD)&&!定义(STM32F10X_HD_VL)&&!定义(STM32F10X_XL)&&!定义(STM32F10X_CL) #错误“请先选择您的应用程序中使用的目标 STM32F10x 设备(在 stm32f10x.h 文件中)” #endif 设备如果类型选择不正确,这里会报错。 #if !defined USE_STDPERIPH_DRIVER /** * @brief 注释下面的行如果您不会使用外围设备驱动程序。 在这种情况下, * @brief 在以下行中调整 应用程序中使用 的外部高速振荡器 (HSE) 的值 提示:为避免每次需要使用不同的 HSE 时修改此文件,您 可以在工具链编译器预处理器中定义 HSE 值。 提示:为了避免每次编译都需要修改这些文件,英文是可以使用编译器的预处理器选项来定义芯片型号等,免得更新这个文件。。。. */ #if !defined HSE_VALUE #ifdef STM32F10X_CL #define HSE_VALUE ((uint32_t)25000000) /*!《 外部振荡器的赫兹值 */ #else #define HSE_VALUE ((uint32_t)8000000) /*!《 外部振荡器的赫兹值 */ #endif /* STM32F10X_CL */ #endif /* HSE_VALUE */ /** * @brief 在下面这行中调整外部高速振荡器(HSE)启动 超时值 *、HSI是内部高速时钟 /①、RC,时钟频率为8MHz。 ②、HSE是外部高速,可接石英/陶瓷 ③、LSI是低速内部时钟~1MHz,或者频率为4kHz。 ④、LSE是低速外部,接频率为32.768kHz的时钟频率。 ⑤ 、PLL锁相环频输出,其输入源输出为HSI/2、HSEHSE/2。倍频替换为216倍,但其最大最大不得超过72MHz。 #define HSE_STARTUP_TIMEOUT ( (uint16_t)0x0500) /*!《 HSE 启动超时 */ 高速外部 时钟启动时间#define HSI_VALUE ((uint32_t)8000000) /*!《 内部振荡器的值,单位为Hz*/ 外部时钟设置的值 / ** * @brief STM32F10x 标准外设库版本号 */ #define __STM32F10X_STDPERIPH_VERSION_MAIN (0x03) /*!《 [31:24] 主版本 */ #define __STM32F10X_STDPERIPH_VERSION_SUB1 (0x05) /*!《 [23:16] sub1 version */ #1《0IPSTM_0F_SION_10F_10S_0F_0S_0S_0D __STDPERIPH_SION_1D :8] SUB2版本* / !#定义__STM32F10X_STDPERIPH_VERSION_RC(0×00)/ * 《[7:0]释放候选* / #定义__STM32F10X_STDPERIPH_VERSION((__STM32F10X_STDPERIPH_VERSION_MAIN 《《 24) |(__ STM32F10X_STDPERIPH_VERSION_SUB1 《《 16) |(__ STM32F10X_STDPERIPH_VERSION_SUB2 《《8) |(__STM32F10X_STDPERIPH_VERSION_RC)) /** * @} */ /** @addtogroup Configuration_section_for_CMSIS * @{ */ /** * @brief Cortex-M3 处理器和内核外设的配置 */ #ifdef STM32F10X_XL #define __MPU_PRESENT 1 /*!《 STM32 XL 密度设备提供 MPU */ #else #define __MPU_PRESENT 0 /*!《 其他 STM32 设备不提供 MPU */ #endif /* STM32F10X_XL */ #define __NVIC_PRIO_BITS 4 /*!《 STM32 使用 4 位作为优先级 */ #define __ConfigickVendor_SysT 0 /*!《 如果使用不同的 SysTick 配置,则设置为 1 */ /** * @brief STM32F10x 中断编号定义,根据所选设备 * 在 @ref Library_configuration_section */ typedef enum IRQn { /****** Cortex-M3 处理器异常编号 ************************** *************************/ NonMaskableInt_IRQn = -14, /*!《 2 不可屏蔽中断 */ MemoryManagement_IRQn = -12, /*!《 4 Cortex-M3 内存管理中断 */ BusFault_IRQn = -11, /*!《 5 Cortex-M3 总线故障中断 */ UsageFault_IRQn = -10, /*!《 6 Cortex-M3 使用故障中断 */ SVCall_IRQn = -5, /*!《 11 Cortex-M3 SV 调用中断 */ DebugMonitor_IRQn = -4, /*!《 12 Cortex-M3 调试监视器中断 */ PendSV_IRQn = -2, /*!《 14 Cortex-M3 Pend SV 中断 */ SysTick_IRQn = -1, /*!《 15 Cortex-M3 系统滴答中断 */ -------------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----------------------- --------------------------- -------------------------------------------------- -------------------------------------------------- ------------------------------------------ /**这里是STM32比较重要的头文件 ************************************************ ******************************** ST 版本库的 stm32f10x.h 文件,包含整个头文件代码。 * @file stm32f10x.h ST 标准的头文件 * @author MCD Application Team 微控制器开发小组。 * @version V3.5.0 版本 * @date 11-March-2011 2011 年 3 月11 * @brief CMSIS Cortex-M3 Device Peripheral Access Layer Header File.(CMSIS:Cortex Microcontroller Software Interface Standard) 是Cortex-M处理器系列的与供应商网络的硬件层。 *该文件包含所有外围寄存器的定义, 位 * STM32F10x 连接线的定义和内存映射, * 高密度、高密度价值线、中密度、 * 中密度价值线、低密度、低密度价值线 * 和 XL 密度器件。 *这个文件包含了芯片STM32F10X(接口增强型)内部的寄存器定义,位定义,内存地址变换定义,还有一些相应的高密度,低密度产品线的设备。 *文件是唯一的包括文件,该应用程序员 * 在 C 源代码中使用,通常在 main.c 中。该文件包含: * - 允许选择的配置部分: * - 目标应用程序中使用的设备 * - 在应用程序代码中使用或不使用外围设备驱动程序(即 * 代码将基于对外围设备寄存器的直接访问 * 而不是驱动程序 API),此选项由 *“#define USE_STDPERIPH_DRIVER”控制 * - 更改一些特定于应用程序的参数,例如 HSE * 晶振频率 * - 数据结构和所有外围 设备的地址映射* - 外围设备的寄存器声明和位定义 * - 访问外围寄存器硬件的宏 * 这个文件在应用程序中是用组件的头文件,它是 C 代码写写。 通常包括在 MAIN主程序中。它包括: 1 设备中的目标应用程序。 2 决定是否使用外部设备的代码(例如使用基础使用接口的代码,而不是我们所知道的 API 应用接口代码)。这些设备可以通过设置 ”#define USE_STDPERIPH_DRIVER“ 来实现。 3 通过此文件外部设备的参数参数。 4 程序的数据结构以及外部的了解地址映射。 5外部的设计参数和位置可以在这个文件里面定义。 ***** ****************************************************** ************************ * @attention * * 目前的固件仅供指导,旨在为客户提供 * 包含有关其产品的编码信息,以便于他们可以节省 * 时间。因此,STMICROELECTRONICS 不对任何 *直接、间接或后果性损害负责,这些损害涉及*由此类 固件的内容和/或客户在 * 编码信息相关信息中进行的使用引起的任何索赔他们的产品。 *注意:此文件代码提供给用户,目的是帮助用户提高效率节省时间。ST 将不会提供任何用户自己代码的解释和帮助。也不会解决其在代码中的任何错误。 * 《h2 》《中心》?COPYRIGHT 2011 STMicroelectronics《/center》《/h2》 ******************************************** **************************************** */ /** @addtogroup CMSIS * @{ */这个不用关心,只是说明了这个文件的作者,公司产品等等,你贴出来的估计是呕吐广而告之,这也是程序员的一点水秘密嘛 /**@addtogroup stm32f10x * @{ */ #ifndef __STM32F10x_H//如果没有定义__STM32F10x_H,则定义__STM32F10x_H #define __STM32F10x_H #ifdef __cplusplus// extern ”C“ { #endif 这里是一种条件编译。extern ”C“指令非常有用,因为C和C++的近亲关系。注意:extern ”C“指令中的C,表示的一种编译和连接规约,而不是一种语言。C表示遵守C语言的编译和连接规约的任何语言,如Fortran 、汇编器等。 还有要说明的是,外部的“C”指令仅指定编译和连接规约,但不影响语义。例如在函数声明中,指定了外部的“C”,仍然要遵守C ++的类型检测,参数转换规则。 一开始我不解 extern ”C“ {这个语句的英文,原来是解释说明的定义都是使用 C 语言写的。用的话,它里面是定义有__cplusplus这个的,而通过extern ”C“ {告知告知器,这代码是用C写的,要按照C语言编译。这是因为C++里面有函数重载,警告的时候把参数也编译了,而ç的话,编译只编译函数名。 / ** @addtogroup Library_configuration_section * @ { * / / *取消注释根据在使用的目标设备STM32下面的线 应用 * / #如果!定义 (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM32F10X_HD_VL) && 2F 定义(STM32F10X_CL) /* #define STM32F10X_LD */ /*!《 STM32F10X_LD: STM32 低密度设备 */ /* #define STM32F10X_LD_VL */ /*!《 STM32F10X_LD_VL: STM32 低密度价值线设备 */ /* #define STM32F_MD */10X 《STM32F10X_MD:STM32中密度设备* / / *#定义STM32F10X_MD_VL * / / * 《STM32F10X_MD_VL:STM32中密度价值线装置* / / *#定义STM32F10X_HD * / / * 《STM32F10X_HD:STM32高密度设备* / / * #define STM32F10X_HD_VL */ /*!《 STM32F10X_HD_VL:STM32 高密度价值线器件 */ /* #define STM32F10X_XL */ /*!《 STM32F10X_XL:STM32 XL 密度器件 */ /* #define /*!CL_CL */ /* #define STM32F10 《 STM32F10X_CL:STM32 Connectivity line devices */ #endif STM32启动文件选择: - startup_stm32f10x_ld_vl.s:对于 STM32 低密度价值线设备 - startup_stm32f10x_ld.s:对于 STM32 低密度设备 - startup_stm32f10x_md_vl.s:对于 STM32 中密度价值线设备 - startup_stm32f10x_md.s: 中密度启动设备STM32高密度器件-startup_stm32f10x_xl.s:用于STM32 XL密度器件-startup_stm32f10x_cl.s:用于STM32连接线器件 cl:互联型产品,stm32f105/107系列 vl:超高值型产品,stm32f100产品系列, xl: stm32f101/103系列 ld:低密度产品,FLASH小于64K md:中等密度产品,FLASH=64 or 128 hd:高密度产品,FLASH大于128 /* 提示:为了避免每次需要在这些之间切换时修改这个文件 设备,你可以在你的工具链编译器预处理器中定义设备。 提示:为了避免每次编译都需要修改这些文件,英文是使用编译器的预处理器选项来定义芯片型号等,免得编程可以更新这个文件。。。. - 低密度设备是 STM32F101xx、STM32F102xx 和 STM32F103xx 微控制器 ,其中闪存密度介于 16 和 32 KB 之间。 - 低密度超值系列器件是 STM32F100xx 微控制器,其中闪存 密度介于 16 和 32 KB 之间。 - 中密度设备是 STM32F101xx、STM32F102xx 和 STM32F103xx 微控制器,这里定义的是各种产品线的 FLASH 的大小。 其中 Flash 存储器的密度范围在 64 到 128 KB 之间。 - 中等密度超值系列设备是 STM32F100xx 微控制器,其中 闪存密度介于 64 到 128 KB 之间。 - 高密度设备是 STM32F101xx 和 STM32F103xx 微控制器,其中 闪存密度介于 256 和 512 KB 之间。 - 高密度超值系列设备是 STM32F100xx 微控制器,其中 闪存密度介于 256 和 512 KB 之间。 - XL 密度设备是 STM32F101xx 和 STM32F103xx 微控制器,其中 闪存密度介于 512 和 1024 KB 之间。 - 连接线设备是 STM32F105xx 和 STM32F107xx 微控制器。 */ #如果!定义(STM32F10X_LD)&&!定义(STM32F10X_LD_VL)&&!定义(STM32F10X_MD)&&!定义(STM32F10X_MD_VL)&&!定义(STM32F10X_HD)&&!定义(STM32F10X_HD_VL)&&!定义(STM32F10X_XL)&&!定义(STM32F10X_CL) #错误“请先选择您的应用程序中使用的目标 STM32F10x 设备(在 stm32f10x.h 文件中)” #endif 设备如果类型选择不正确,这里会报错。 #if !defined USE_STDPERIPH_DRIVER /** * @brief 注释下面的行如果您不会使用外围设备驱动程序。 在这种情况下, * @brief 在以下行中调整 应用程序中使用 的外部高速振荡器 (HSE) 的值 提示:为避免每次需要使用不同的 HSE 时修改此文件,您 可以在工具链编译器预处理器中定义 HSE 值。 这些提示:为了避免每次编译都需要修改,英文是可以使用编译器的预处理器选项来定义芯片型号等,免去文件更新这个文件。。。. */ #if !defined HSE_VALUE #ifdef STM32F10X_CL #define HSE_VALUE ((uint32_t)25000000) /*!《 外部振荡器的赫兹值 */ #else #define HSE_VALUE ((uint32_t)8000000) /*!《 外部振荡器的赫兹值 */ #endif /* STM32F10X_CL */ #endif /* HSE_VALUE */ /** * @brief 在下面这行中调整外部高速振荡器(HSE)启动 超时值 *、HSI是内部高速时钟 /①、RC,时钟频率为8MHz。 ②、HSE是外部高速,可接石英/陶瓷 ③、LSI是低速内部时钟~1MHz,或者频率为4kHz。 ④、LSE是低速外部,接频率为32.768kHz的时钟频率。 ⑤ 、PLL锁相环频输出,其输入源输出为HSI/2、HSEHSE/2。倍频替换为216倍,但其最大最大不得超过72MHz。 #define HSE_STARTUP_TIMEOUT ( (uint16_t)0x0500) /*!《 HSE 启动超时 */ 高速外部 时钟启动时间#define HSI_VALUE ((uint32_t)8000000) /*!《 内部振荡器的值,单位为Hz*/ 外部时钟设置的值 / ** * @brief STM32F10x 标准外设库版本号标准外设库版本号的定义 */ #define __STM32F10X_STDPERIPH_VERSION_MAIN (0x03) /*!《 [31:24] 主版本 */ #define __STM32F10X_STDPERIPH_VERSION_SUB1 (0x05) /*!《 [23:16] sub1 version */ #1《0IPSTM_0F_SION_10F_10S_0F_0S_0S_0D __STDPERIPH_SION_1D :8] SUB2版本* / !#定义__STM32F10X_STDPERIPH_VERSION_RC(0×00)/ * 《[7:0]释放候选* / #定义__STM32F10X_STDPERIPH_VERSION((__STM32F10X_STDPERIPH_VERSION_MAIN 《《 24) |(__ STM32F10X_STDPERIPH_VERSION_SUB1 《《 16) |(__ STM32F10X_STDPERIPH_VERSION_SUB2 《《8) |(__STM32F10X_STDPERIPH_VERSION_RC)) /** * @} */ /** @addtogroup Configuration_section_for_CMSIS * @{ */ /** * @brief Cortex-M3 处理器和核心外设配置配置Cortex-M3 处理器和核内外设 */ #ifdef STM32F10X_XL #define __MPU_PRESENT 1 /* !《 STM32 XL 密度设备提供 MPU */ #else #define __MPU_PRESENT 0 /*!《 其他 STM32 设备不提供 MPU */ #endif /* STM32F10X_XL */ #define __NVIC_PRIO_BITS 4 /*!《 STM32 使用 4优先级位 */ #define __Vendor_SysTickConfig 0 /*!《 如果使用不同的 SysTick 配置,则设置为 1 */ /** * @brief STM32F10x 中断编号定义,根据所选设备 *在 @ref Library_configuration_section中断线定义,前部分对于所有STM32F10x都有相同定义,后部分根据不同器件容量采用条件编译定义不同中断线。 * / ------------- -------------------------------------------------- -------------------------------------------------- --------------------- ----------------------------- -------------------------------------------------- -------------------------------------------------- ----- 这里是STM32比较重要的头文件 typedef enum IRQn typedef enum表示定义了一个枚举类型的数据结构,你可以用题目中的IRQn去定义变量 {系统异常ID: 标号 中断ID 描述 NonMaskableInt_IRQn -14 不可中断中断 内存管理_IRQn -12 Cortex-M3 内存管理中断 总线故障_IRQn -11 Cortex-M3总线故障中断 UsageFault_IRQn -10 Cortex-M3 禁用故障中断 SVCall_IRQn -5 Cortex-M3 SV 调用中断 DebugMonitor_IRQn -4 Cortex-M3 调试中断中断 挂起SV_IRQn -2 Cortex-M3 Pend SV中断 SysTick_IRQn -1 Cortex-M3系统Tick中断 外设中断ID: 标号中断ID描述标号中断ID描述 WDT_IRQn0看门狗EINT3_IRQn21外中断3 定时器0_IRQn1定时器0ADC_IRQn22AD转换 TIMER1_IRQn2定时器1BOD_IRQn23欠压检测 TIMER2_IRQn3定时器2USB_IRQn24USB TIMER3_IRQn4定时器3CAN_IRQn25CAN UART0_IRQn5UART0DMA_IRQn26通用DMA UART1_IRQn6UART1I2S_IRQn27I2S UART2_IRQn7UART2ENET_IRQn28以太网 UART3_IRQn8UART3MCI_IRQn29SD/MMC卡I/F PWM1_IRQn9PWM1MCPWM_IRQn30电机控制PWM I2C0_IRQn10I2C0QEI_IRQn31正交编码接口 I2C1_IRQn11I2C1PLL1_IRQn32PLL1锁存 I2C2_IRQn12I2C2USBActivity_IRQn33USB活动 Reserved0_IRQn13保留CANActivity_IRQn34CAN活动 SSP0_IRQn14SSP0UART4_IRQn35UART4 SSP1_IRQn15SSP1SSP2_IRQn36SSP2 PLL0_IRQn16PLL0锁存LCD_IRQn37LCD RTC_IRQn17RTCGPIO_IRQn38GPIO EINT0_IRQn18外中断0PWM0_IRQn39PWM0 EINT1_IRQn19外中断1EEPROM_IRQn40EEPROM EINT2_IRQn20外中断2 /****** Cortex-M3 处理器异常编号**************************************** **************/CMSIS 中的中断定义 NonMaskableInt_IRQn = -14, /*!《 2 Non Maskable Interrupt 非屏蔽中断*/ MemoryManagement_IRQn = -12, /*!《 4 Cortex- M3 内存管理 Cortex-M3 内存管理中断 */ BusFault_IRQn = -11, /*!《 5 Cortex-M3 总线故障中断 */ UsageFault_IRQn = -10, /*!《 6 Cortex-M3 使用故障中断 */ SVCall_IRQn = -5, /*!《 11 Cortex-M3 SV 调用中断 */ DebugMonitor_IRQn = -4, /*!《 12 Cortex-M3 调试监视器中断 */ PendSV_IRQn = -2, /*!《 14 Cortex-M3 挂起 SV 中断 */ SysTick_IRQn = -1, /*!《 15 Cortex-M3 系统滴答中断 */ /****** STM32 特定中断号 *** ****************************************************** ****/ WWDG_IRQn = 0, /*!《 Window WatchDog Interrupt */ PVD_IRQn = 1, /*!《 PVD 通过 EXTI 线路检测中断 */ TAMPER_IRQn = 2, /*!《 Tamper Interrupt */ RTC_IRQn = 3, /*!《 RTC 全局中断 */ FLASH_IRQn = 4, /*!《 FLASH 全局中断 */ RCC_IRQn = 5, /*!《 RCC 全局中断 */ EXTI0_IRQn = 6, /*!《 EXTI Line0 中断 */ EXTI1_IRQn = 7, /*!《 EXTI Line1 中断*/ EXTI2_IRQn = 8, /*!《 EXTI Line2 中断 */ EXTI3_IRQn = 9, /*!《 EXTI Line3 中断 */ EXTI4_IRQn = 10, /*!《 EXTI Line4 中断 */ DMA1_Channel1_IRQn = 11, /*!《 DMA1 通道 1 全局中断 */ DMA1_Channel2_IRQn = 12, /*!《 DMA1 通道 2 全局中断 */ DMA1_Channel3_IRQn = 13, /*!《 DMA1 通道 3 全局中断 */ DMA1_41_4 *!《 DMA1 通道 4 全局中断 */ DMA1_Channel5_IRQn = 15, /*!《 DMA1 通道 5 全局中断 */ DMA1_Channel6_IRQn = 16, /*!《 DMA1 通道 6 全局中断 */ DMA1_Channel7_IRQn = 17, 通道 /*!《 DMA1 7 全局中断 */ #ifdef STM32F10X_LD ADC1_2_IRQn = 18, /*!《 ADC1 和 ADC2 全局中断 */ USB_HP_CAN1_TX_IRQn = 19, /*!《 USB 设备高优先级或 CAN1 TX 中断 */ USB_LP_CAN1_RX0_IRQn = 20, *!《 USB 设备低 RX0 优先级或 CAN 中断/ CAN1_RX1_IRQn = 21, /*!《 CAN1 RX1 中断 */ CAN1_SCE_IRQn = 22, /*!《 CAN1 SCE 中断 */ EXTI9_5_IRQn = 23, /*!《 外线[9:5] 中断 */ TIM1_BRK2_IRQn *!《 TIM1 中断中断 */ TIM1_UP_IRQn = 25, /*!《 TIM1 更新中断 */ TIM1_TRG_COM_IRQn = 26, /*!《 TIM1 触发和换向中断 */ TIM1_CC_IRQn = 27, /*!《 TIM1 捕捉比较中断 */ TIM2_IRQn = 28 TIM2 全局中断 */ TIM3_IRQn = 29, /*!《 TIM3 全局中断 */ I2C1_EV_IRQn = 31, /*!《 I2C1 事件中断 */ I2C1_ER_IRQn = 32, /*!《 I2C1 错误中断 */ SPI1_IRQn = 35, /*!《 SPI1 全局中断 */ USART1_IRQn = 37, /*!《 USART1 全局中断 */ USART2_IRQn = 38, /*!《 USART2 全局中断 */ EXTI15_10_IRQn = 40, /*!《 外线[ 15:10] 中断 */ RTCAlarm_IRQn = 41, /*!《 通过 EXTI 线路中断的 RTC 警报 */ USBWakeUp_IRQn = 42 /*!《 通过 EXTI 线路中断从挂起状态唤醒 USB 设备 */ #endif /* STM32F10X_LD */ #ifdef STM32F10X_LD_VL ADC1_IRQn = 18, /*!《 ADC1 全局中断 */ EXTI9_5_IRQn = 23, /*!《 External Line[9:5] Interrupts */ TIM1_BRK_TIM15_IRQn = 24, /*!《 TIM1 Break and TIM15 Interrupts */ Q TIM16_UP_IR /*!《 TIM1 更新和 TIM16 中断 */ TIM1_TRG_COM_TIM17_IRQn = 26, /*!《 TIM1 触发和换向和 TIM17 中断 */ TIM1_CC_IRQn = 27, /*!《 TIM1 捕获比较中断 */ TIM2_IRQn =!《 TIM2 全局中断 */ TIM3_IRQn = 29, /*!《 TIM3 全局中断 */ I2C1_EV_IRQn = 31, /*!《 I2C1 事件中断 */ I2C1_ER_IRQn = 32, /*!《 I2C1 错误中断 */ SPI1_IRQn = 35, SPI /*!《 */ USART1_IRQn = 37, /*!《 USART1 全局中断 */ USART2_IRQn = 38, /*!《 USART2 全局中断 */ EXTI15_10_IRQn = 40, /*!《 外线[15:10] 中断 */ RTCAlarm_IRQn = 41, /*!《 RTC Alarm through EXTI Line Interrupt */ CEC_IRQn = 42, /*!《 HDMI-CEC Interrupt */ TIM6_DAC_IRQn = 54, /*!《 TIM6 and DAC underrun Interrupt */ TIM7_IRQn = 55 /* !《 TIM7 中断 */ #endif /* STM32F10X_LD_VL */ ------------------------------------- -------------------------------------------------- ----------------------------------------- ---------- -------------------------------------------------- -------------------------------------------------- ----------------- 这里是STM32比较重要的头文件 系统异常ID: 标号 中断ID 描述 NonMaskableInt_IRQn -14 不可屏蔽中断 MemoryManagement_IRQn -12 Cortex-M3内存管理中断 BusFault_IRQn -11 Cortex-M3 总线Fault中断 UsageFault_IRQn -10 Cortex-M3 用法Fault 中断 SVCall_IRQn -5 Cortex-M3 SV Call中断 DebugMonitor_IRQn -4 Cortex-M3 调试监视中断 挂起SV_IRQn -2 Cortex-M3 Pend SV中断 SysTick_IRQn -1 Cortex-M3系统Tick中断 外设中断ID: 标号中断ID描述标号中断ID描述 WDT_IRQn0看门狗EINT3_IRQn21外中断3 定时器0_IRQn1定时器0ADC_IRQn22AD转换 定时器1_IRQn2定时器1BOD_IRQn23欠压检测 定时器2_IRQn3定时器2USB_IRQn24USB TIMER3_IRQn4定时器3CAN_IRQn25能够 UART0_IRQn5UART0DMA_IRQn26通用DMA UART1_IRQn6串口1I2S_IRQn27I2S UART2_IRQn7串口2ENET_IRQn28侵蚀 UART3_IRQn8串口3MCI_IRQn29SD/MMC卡接口 PWM1_IRQn9脉宽调制1MCPWM_IRQn30电机控制PWM I2C0_IRQn10I2C0QEI_IRQn31编码接口 I2C1_IRQn11I2C1PLL1_IRQn32PLL1锁存 I2C2_IRQn12I2C2USBActivity_IRQn33USB活动 保留0_IRQn13存款CANActivity_IRQn34CAN活动 SSP0_IRQn14SSP0UART4_IRQn35串口4 SSP1_IRQn15SSP1SSP2_IRQn36SSP2 PLL0_IRQn16PLL0锁存LCD_IRQn37液晶显示器 RTC_IRQn17RTCGPIO_IRQn38GPIO EINT0_IRQn18外中断0PWM0_IRQn39PWM0 EINT1_IRQn19外中断1EEPROM_IRQn40EEPROM EINT2_IRQn20外中断2 #ifdef STM32F10X_MD 这是我们前面讲过的不同的芯片型号,对应不同的中断级别。请大家自己研究! ADC1_2_IRQn = 18, /*!《 ADC1 and ADC2 global Interrupt */ USB_HP_CAN1_TX_IRQn = 19, /*!《 USB 设备高优先级或 CAN1 TX 中断 */ USB_LP_CAN1_RX0_IRQn = 20, /*!《 USB 设备低优先级或 CAN1 RX0 中断 */ CAN1_RX1_IRQn = 21, /*!《 CAN1 RX1 中断 */ CAN1_SCE_IRQ1 /*!《2 SCE 中断 */ EXTI9_5_IRQn = 23, /*!《 External Line[9:5] 中断 */ TIM1_BRK_IRQn = 24, /*!《 TIM1 中断中断 */ TIM1_UP_IRQn = 25, /*!《 TIM1 更新中断 */ TIM1_TRG_COM_IRQn = 26, /*!《 TIM1 触发和换向中断 */ TIM1_CC_7,《 TIM1_1 =!捕捉比较中断 */ TIM2_IRQn = 28, /*!《 TIM2 global Interrupt */ TIM3_IRQn = 29, /*!《 TIM3 global Interrupt */ TIM4_IRQn = 30, /*!《 TIM4 global Interrupt */ I2C1_EV_IRQn = 31, /*!《 I2C1 事件中断 */ I2C1_ER_IRQn = 32, /*!《 I2C1 错误中断 */ I2C2_EV_IRQn = 33, /*!《 I2C2 事件中断 */ I2C2_ER_IRQ2 /*!《I2C2_ER_IRQn = 3 错误中断*/ SPI1_IRQn = 35, /*!《 SPI1 全局中断 */ SPI2_IRQn = 36, /*!《 SPI2 全局中断 */ USART1_IRQn = 37, /*!《 USART1 全局中断 */ USART2_IRQn = 38, /*!《 USART2 全局中断 */ USART3_IRQn = 39, /*!《 USART3 全局中断 */ EXTI15_10_IRQn = 40, /*!《 外线[15:10] 中断 */ RTCAlarm_IRQn = 41, /* !《 RTC Alarm through EXTI Line Interrupt */ USBWakeUp_IRQn = 42 /*!《 USB Device WakeUp from suspend through EXTI Line Interrupt */ #endif /* STM32F10X_MD */ #ifdef STM32F10X_MD_VL 这是我们前面讲过的不同的芯片型号,对应着不同的中断级别。请大家自行研究! ADC1_IRQn = 18,/ * 《!ADC1全局中断* / EXTI9_5_IRQn = 23,/ * 《外线![9:5]中断* / !TIM1_BRK_TIM15_IRQn = 24,/ * 《TIM1间隔和TIM15中断* / !TIM1_UP_TIM16_IRQn = 25,/ * 《TIM1更新和TIM16中断* / TIM1_TRG_COM_TIM17_IRQn = 26, /*!《 TIM1 触发和换向和 TIM17 中断 */ TIM1_CC_IRQn = 27, /*!《 TIM1 捕捉比较中断 */ TIM2_IRQn = 28, /*!《 TIM2 全局中断 */ TIM3_IRQn = 29, /*!《 TIM3 全局中断 */ TIM4_IRQn = 30, /*!《 TIM4 全局中断 */ I2C1_EV_IRQn = 31, /*!《 I2C1 事件中断 */ I2C1_ER_IRQn = 32, /*!《 I2C1 错误中断 */ I2C2_EV_IRQn = 33, /*!《 I2C1事件中断*/ I2C2_ER_IRQn = 34, /*!《 I2C2 错误中断 */ SPI1_IRQn = 35, /*!《 SPI1 全局中断 */ SPI2_IRQn = 36, /*!《 SPI2 全局中断 */ USART1_IRQn = 37, /*!《 USART1 global Interrupt */ USART2_IRQn = 38, /*!《 USART2 global Interrupt */ USART3_IRQn = 39, /*!《 USART3 global Interrupt */ EXTI15_10_IRQn = 40, /*!《 External Line[ 15:10] 中断 */ RTCAlarm_IRQn = 41, /*!《 RTC 警报通过 EXTI 线路中断 */ CEC_IRQn = 42, /*!《 HDMI-CEC 中断 */ TIM6_DAC_IRQn = 54, /*!《 TIM6 和 DAC 欠载中断*/ TIM7_IRQn = 55 /*!《 TIM7 Interrupt */ #endif /* STM32F10X_MD_VL */ 我们通过这个枚举类型,可以知道系统所有的中断都在里面,而且可以了解它们的ID,这代表了它们的中断级别。 ------------------------------------------------- ---------------------------------- ---------------- -------------------------------------------------- ----------------- #include ”core_cm3.h“STM32的内核是ARM CORTEX-M3,core_cm3.h包含一些内核相关的函数和宏定义,例如对应内核定义、部分核外设计的地址等等,其就是core_cm3.c文件。初学可以不管他,只要把它包含进工程里就行了,这里是非常重要的功能,上层的一些功能直接调用它们了。如果对CORTEX-M3内核有兴趣或者基础较高,想深入了解这些函数,可以仔细研读一下,我们在后续的开讲中会仔细讲解这一个文件的内容。 #包括“system_stm32f10x.h “这个文件就是我们现在所讲的文件了。 #include 《stdint.h》《stdint.h》 定义了 int16_t 、 uint32_t 、 int64_t 等整型,在需要确定大小的整型时可以使用它们代替 short 、 unsigned long long 等,在 C 整型中,只使用int。 /** @addtogroup Exported_types * @@ */ /*! STM32F10x Standard Peripheral Library old types (maintained for legacy purpose) */由于新的文件与老的文件不会有问题,所以要转换变量类型。 typedef int32_t s32; typedef 在计算机编程语言中为不能复杂的声明定义简单的方法,与宏定义的特定类不同。同一个表达式中。 “变量类型”,3.0以后的版本中使用了CMSIS数据类型,变量的定义有所不同,但是出于兼容旧版本的目的,以上的数据类型仍然兼容。 CMSIS IO类型限定词 IO类限定词 #定义 描述 _一世 可变常量 只读访问 _O 易挥发的 写只访问 _IO 易挥发的 读和写访问 件库与 CMSIS 数据类型对比 扣库类型 CMSIS 类型 描述 s32 int32_t 易只读有符号32位数据 s16 int16_t 易只读有符号16位数据 s8 int8_t 易只读有符号8位数据 sc32 const int32_t 只读有符号32位数据 sc16 const int16_t 只读有符号16位数据 sc8 const int8_t 只读有符号8位数据 vs32 _IO int32_t 易挥发读写访问有符号32位数据 vs16 _IO int16_t 易挥发读写访问有符号16位数据 vs8 _IO int8_t 易挥发读写访问有符号8位数据 vsc32 _I int32_t 易挥发只读有符号32位数据 vsc16 _I int16_t 易挥发只读有符号16位数据 vsc8 _I int8_t 易挥发只读有符号8位数据 u32 uint32_t 无符号32位数据 u16 uint16_t 无符号16位数据 u8 uint8_t 无符号8位数据 uc32 const uint32_t 只读无符号32位数据 uc16 const uint16_t 只读无符号16位数据 uc8 const uint8_t 只读无符号8位数据 vu32 _IO uint32_t 易挥发读写访问无符号32位数据 vu16 _IO uint16_t 易挥发读写访问无符号16位数据 vu8 _IO uint8_t 易挥发读写访问无符号8位数据 vuc32 _I uint32_t 易挥发只读无符号32位数据 vuc16 _I uint16_t 易挥发只读无符号16位数据 vuc8 _I uint8_t 易挥发只读无符号8位数据 stm32f10x.h文件中还包含了常用的布尔形变量定义,例如: 1 typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus; 2 3 typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; 4 5 #define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE)) 6 7 typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; 不同版本的标准外设库的变量定义略有不同,如3.4版本中就没有之前版本的真假定义,用户也可以根据自己的需求根据上面的格式定义自己的布尔形变量。 typedef int16_t s16;到相关的定义问题时,应首先找到对应的头文件定义。 typedef int8_t s8; typedef const int32_t sc32; /*!《只读*/ const是一个C语言的关键字,它限定了一个变量继续使用const在一定程度上可以提高程序的安全性和指导时间。另外,在看别人代码的时候,了解constconst所起的作用,对理解对方的程序也有一些帮助。其他编程语言中也有出现,如C++、PHP5、C#.net、HC08 C。 typedef const int16_t sc16; /*!《 只读 */ typedef const int8_t sc8; /*!《 只读 */ typedef __IO int32_t vs32; typedef __IO int16_t vs16; typedef __IO int8_t vs8; typedef __I int32_t vsc32; /*!《 只读 */ typedef __I int16_t vsc16; /*!《 只读 */ typedef __I int8_t vsc8; /*!《 只读 */ typedef uint32_t u32; typedef uint16_t u16; typedef uint8_t u8; typedef const uint32_t uc32; /*!《 只读 */ typedef const uint16_t uc16; /*!《 只读 */ typedef const uint8_t uc8; /*!《 只读 */ typedef __IO uint32_t vu32; typedef __IO uint16_t vu16; typedef __IO uint8_t vu8; typedef __I uint32_t vuc32; /*!《 只读 */ typedef __I uint16_t vuc16; /*!《 只读 */ typedef __I uint8_t vuc8; /*!《 只读 */ typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus; typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; #define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE)) typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; /*《STM32F10x Standard Peripher Library old definition (maintained for legacy purpose) */ 由于新的文件老的文件不会有问题与,所以要转换变量类型。 #define HSEStartUp_TimeOut HSE_STARTUP_TIMEOUT 请大家注意这里的高速定义,外设的启动时间。 #define HSE_Value HSE_VALUE #define HSI_Value HSI_VALUE /** * @} */ /** @addtogroup Peripheral_registers_structures * @{ */ /** * @brief 模数转换器 */ typedef struct ADC_TypeDef结构体的声名,看看它内部有哪些内容。请读者注意 。ADC_TypeDef看起来,是对ADC一个地址的一个定义。 {__IO就是volatileuint32_t就是32位无符号数字。 都是ARM公司无聊滴滴在CMSIS STM32库1.x 2.x都没有这玩意,到了3.0以后引入了CMSIS就有了。 __IO uint32_t SR; __IO uint32_t CR1; __IO uint32_t CR2; __IO uint32_t SMPR1; __IO uint32_t SMPR2; __IO uint32_t JOFR1; __IO uint32_t JOFR2; __IO uint32_t JOFR3; __IO uint32_t JOFR4; __IO uint32_t HTR; __IO uint32_t LTR; __IO uint32_t SQR1; __IO uint32_t SQR2; __IO uint32_t SQR3; __IO uint32_t JSQR; __IO uint32_t JDR1; __IO uint32_t JDR2; __IO uint32_t JDR3; __IO uint32_t JDR4; __IO uint32_t DR; ADC_TypeDef; /** * @brief 备份寄存器 */ typedef struct 这个结构体声明是数据备份,它们是 16 位的。它可以管理实例,可以存储 RTC 检验值,可以做数据备份。 { uint32_t RESERVED0; __IO uint16_t DR1;DR代表数据备份1---45 uint16_t 保留 1; __IO uint16_t DR2; uint16_t RESERVED2; __IO uint16_t DR3; uint16_t RESERVED3; __IO uint16_t DR4; uint16_t RESERVED4; __IO uint16_t DR5; uint16_t RESERVED5; __IO uint16_t DR6; uint16_t RESERVED6; __IO uint16_t DR7; uint16_t RESERVED7; __IO uint16_t DR8; uint16_t RESERVED8; __IO uint16_t DR9; uint16_t RESERVED9; __IO uint16_t DR10; uint16_t 保留 10; __IO uint16_t RTCCR;RTC 请求保护 uint16_t RESERVED11; __IO uint16_t CR;CR 控制控制 uint16_tSERVED12; __IO uint16_t CSR;CSR 备份控制状态智能 uint16_t RESERVED13[5]; __IO uint16_t DR11; uint16_t RESERVED14; __IO uint16_t DR12; uint16_t RESERVED15; __IO uint16_t DR13; uint16_t RESERVED16; __IO uint16_t DR14; uint16_t RESERVED17; __IO uint16_t DR15; uint16_t RESERVED18; __IO uint16_t DR16; uint16_t RESERVED19; __IO uint16_t DR17; uint16_t RESERVED20; __IO uint16_t DR18; uint16_t RESERVED21; __IO uint16_t DR19; uint16_t RESERVED22; __IO uint16_t DR20; uint16_t RESERVED23; __IO uint16_t DR21; uint16_t RESERVED24; __IO uint16_t DR22; uint16_t RESERVED25; __IO uint16_t DR23; uint16_t RESERVED26; __IO uint16_t DR24; uint16_t RESERVED27; __IO uint16_t DR25; uint16_t RESERVED28; __IO uint16_t DR26; uint16_t RESERVED29; __IO uint16_t DR27; uint16_t 保留30; __IO uint16_t DR28; uint16_t RESERVED31; __IO uint16_t DR29; uint16_t RESERVED32; __IO uint16_t DR30; uint16_t RESERVED33; __IO uint16_t DR31; uint16_t RESERVED34; __IO uint16_t DR32; uint16_t RESERVED35; __IO uint16_t DR33; uint16_t RESERVED36; __IO uint16_t DR34; uint16_t RESERVED37; __IO uint16_t DR35; uint16_t RESERVED38; __IO uint16_t DR36; uint16_t RESERVED39; __IO uint16_t DR37; uint16_t 保留40; __IO uint16_t DR38; uint16_t 保留41; __IO uint16_t DR39; uint16_t RESERVED42; __IO uint16_t DR40; uint16_t RESERVED43; __IO uint16_t DR41; uint16_t RESERVED44; __IO uint16_t DR42; uint16_t RESERVED45; BKP_TypeDef; /** * @brief 控制器局域网 TxMailBox */ typedef struct { __IO uint32_t TIR; __IO uint32_t TDTR; __IO uint32_t TDLR; __IO uint32_t TDHR; CAN_TxMailBox_TypeDef; CAN的发送邮箱寄存器的结构体定义。 / ** * @brief控制器局域网FIFOMailBox * / typedef结构 { __IO uint32_t的RIR; __IO uint32_t RDTR; __IO uint32_t RDLR; __IO uint32_t RDHR; } CAN_FIFOMailBox_TypeDef;先进先出(FIFO)缓冲器,是一种寄存器在这个头文件里定义了它的结构体类型。 / ** * @brief控制器局域网FilterRegister * / typedef结构 { __IO uint32_t的FR1; __IO uint32_t FR2; }CAN_Filter Register_TypeDef;CAN硬件过滤器、访问码和访问码掩码。 。用于支持不同应用 / ** * @brief控制器局域网 * / typedef结构 { __IO uint32_t的MCR; __IO uint32_t MSR; __IO uint32_t TSR; __IO uint32_t RF0R; __IO uint32_t RF1R; __IO uint32_t IER; __IO uint32_t ESR; __IO uint32_t BTR; uint32_t RESERVED0[88]; CAN_TxMailBox_TypeDef sTxMailBox[3]; CAN_FIFOMailBox_TypeDef sFIFOMailBox[2]; uint32_t 保留 1[12]; __IO uint32_t FMR; __IO uint32_t FM1R; uint32_t RESERVED2; __IO uint32_t FS1R; uint32_t RESERVED3; __IO uint32_t FFA1R; uint32_t RESERVED4; __IO uint32_t FA1R; uint32_t RESERVED5[8]; #ifndef STM32F10X_CL CAN_FilterRegister_TypeDef sFilterRegister[14]; #else CAN_FilterRegister_TypeDef sFilterRegister[28]; #endif /* STM32F10X_CL */ } CAN_TypeDef; /** * @brief 消费电子控制 (CEC) */ typedef struct { __IO uint32_t CFGR; __IO uint32_t OAR; __IO uint32_t PRES; __IO uint32_t ESR; __IO uint32_t CSR; __IO uint32_t TXD; __IO uint32_t RXD; CEC_TypeDef; CEC用于记录CAN总线发送数据错误的发送 /** * @brief CRC计算单元 */ typedef struct { __IO uint32_t DR; __IO uint8_t IDR; uint8_t 保留0; uint16_t 保留 1; __IO uint32_t CR; } CRC_TypeDe CRC校验 /** * @brief Digital to Analog Converter 数模转换相应的结构体,DAC相关数据啊 */ typedef struct { __IO uint32_t CR; __IO uint32_t SWTRIGR;SWTRIGR 这个DAC软件触发 触发器__IO uint32_t DHR12R1; DAC 通道 1 的 11 位右数据保持这个只 锁 2 DAC_DHR12R。 __IO uint32_t DHR8R1; __IO uint32_t DHR12R2; __IO uint32_t DHR12L2; __IO uint32_t DHR8R2; __IO uint32_t DHR12RD; __IO uint32_t DHR12LD; __IO uint32_t DHR8RD; __IO uint32_t DOR1; __IO uint32_t DOR2; #if 定义 (STM32F10X_LD_VL) || 定义 (STM32F10X_MD_VL) || 定义(STM32F10X_HD_VL) __IO uint32_t SR; #endif } DAC_TypeDef; -------------------------------------------------- ------------------------------- --------------- -------------------------------------------------- -------------------- /** * @brief DMA 控制器 DMA传输将数据从一个地址空间复制到另一个地址。当CPU初始化传输动作,传输动作是由DMA控制器来和完成。典型的例子就是移动一个外部内存的块到芯片内部更新。快的内存区。这样的操作并没有让处理器工作拖延,系统可以被拖延去处理其他的工作。DMA传输对于高效能嵌入式系统算法和网络是很重要的 。DMA 在实现DMA传输时间,是由DMA控制器直接控制管总线,因此,存在着一个总线控制权转移问题。即DMA传输前,CPU总线控制权,在DMA控制器传输后,DMA控制器应立即把总线控制权再交回给CPU。一个完整的DMA传输过程必须经过DMA请求、DMA响应、DMA传输、DMA结束4个步骤。 */ typedef struct这里就是直接内存接口相关定义,我想DMA大家应该不是太陌生。 { __IO uint32_t的CCR; __IO uint32_t CNDTR; __IO uint32_t CPAR; __IO uint32_t CMAR; } DMA_Channel_TypeDef; typedef struct { __IO uint32_t ISR; __IO uint32_t IFCR; DMA_TypeDef; /** * @brief Ethernet MAC */ MAC(Medium Access Control)模块,实现符合IEEE 802.3标准的MAC逻辑。这个结构体是网络模块的相关定义。 typedef struct { __IO uint32_t MACCR; __IO uint32_t MACFFR; __IO uint32_t MACHTHR; __IO uint32_t MACHTLR; __IO uint32_t MACMIIAR; __IO uint32_t MACMIIDR; __IO uint32_t MACFCR; __IO uint32_t MACVLANTR;/* 8 */ uint32_t RESERVED0[2]; __IO uint32_t MACRWUFFR;/* 11 */ __IO uint32_t MACPMTCSR; uint32_t 保留 1[2]; __IO uint32_t MACSR;/* 15 */ __IO uint32_t MACIMR; __IO uint32_t MACA0HR; __IO uint32_t MACA0LR; __IO uint32_t MACA1HR; __IO uint32_t MACA1LR; __IO uint32_t MACA2HR; __IO uint32_t MACA2LR; __IO uint32_t MACA3HR; __IO uint32_t MACA3LR;/* 24 */ uint32_t RESERVED2[40]; __IO uint32_t MMCCR;/* 65 */ __IO uint32_t MMCRIR; __IO uint32_t MMCTIR; __IO uint32_t MMCRIMR; __IO uint32_t MMCTIMR;/* 69 */ uint32_t RESERVED3[14]; __IO uint32_t MMCTGFSCCR;/* 84 */ __IO uint32_t MMCTGFMSCCR; uint32_t RESERVED4[5]; __IO uint32_t MMCTGFCR; uint32_t RESERVED5[10]; __IO uint32_t MMCRFCECR; __IO uint32_t MMCRFAECR; uint32_t RESERVED6[10]; __IO uint32_t MMCRGUFCR; uint32_t RESERVED7[334]; __IO uint32_t PTPTSCR; __IO uint32_t PTPSSIR; __IO uint32_t PTPTSHR; __IO uint32_t PTPTSLR; __IO uint32_t PTPTSHUR; __IO uint32_t PTPTSLUR; __IO uint32_t PTPTSAR; __IO uint32_t PTPTTHR; __IO uint32_t PTPTTLR; uint32_t RESERVED8[567]; __IO uint32_t DMABMR; __IO uint32_t DMATPDR; __IO uint32_t DMARPDR; __IO uint32_t DMARDLAR; __IO uint32_t DMATDLAR; __IO uint32_t DMASR; __IO uint32_t DMAOMR; __IO uint32_t DMAIER; __IO uint32_t DMAMFBOCR; uint32_t RESERVED9[9]; __IO uint32_t DMACHTDR; __IO uint32_t DMACHRDR; __IO uint32_t DMACHTBAR; __IO uint32_t DMACHRBAR; } ETH_TypeDef; /** * @brief 外部中断/事件控制器 */ EXTI 机械结构 EXTI 输入结构,EXTI_TypeDef 结构,EXTI_TypeDef 结构,在文件stm2f10x_map.h 中定义如下: typedef struct { vu32 IMR; vu32 电子病历;vu32 RTSR;vu32 FTSR;vu32 SWIER; vu32 公关; }EXTI_TypeDef; 表 128. 例举了EXTI所有商标 表 128 EXTI 摄像头锁具描述 IMR 屏蔽屏蔽 EMR 屏蔽屏蔽 RTSR 上升沿触发选择 FTSR 下降沿沿触发选择选择 SWIR 软件删除事件 PR 挂起筛选 typedef struct { __IO uint32_t IMR; __IO uint32_t EMR; __IO uint32_t RTSR; __IO uint32_t FTSR; __IO uint32_t SWIER; __IO uint32_t PR; EXTI_TypeDef; /** * @brief FLASH Register */ FLASH FLASH智能手机寄存器 */ FLASH FLASH 智能手机访问控制控制 KEYR FPEC 密钥密码 OPTKEYR 选择字节密码寄存器 SR FLASH 寄存器 CR FLASH 控制寄存器 AR FLASH 地址寄存器 OBR 选择和寄存器状态WRPR 选择字节写保护 寄存器 typedef struct { __IO uint32_t ACR; __IO uint32_t KEYR; __IO uint32_t OPTKEYR; __IO uint32_t SR; __IO uint32_t CR; __IO uint32_t AR; __IO uint32_t 保留; __IO uint32_t OBR; __IO uint32_t WRPR; #ifdef STM32F10X_XL uint32_t 保留 1[8]; __IO uint32_t KEYR2; uint32_t RESERVED2; __IO uint32_t SR2; __IO uint32_t CR2; __IO uint32_t AR2; #endif /* STM32F10X_XL */ } FLASH_TypeDef; -------------------------------------------------- ---------------------------------- ---------------- -------------------------------------------------- ------------------ //本程序只供学习使用,如果用于工程应用,请仔细检查 //主要对于ST公司的库存文件stm32f10x.h进行解析 //修改日期:2014/6 //Copyright(C) 2014-2025 //All rights reserved //**************************** ****************************************************** **** */ /** * @brief Option Bytes Registers */选项字节寄存器 typedef struct { __IO uint16_t RDP;RDP 为细选项字节,USER 为用户选项字节,Data0 为数据 0 选项字节,Data1 为数据 1 选项字节,WRP0为写保护0的先项字节。依此类推 __IO uint16_t USER; __IO uint16_t 数据0; __IO uint16_t 数据1; __IO uint16_t WRP0; __IO uint16_t WRP1; __IO uint16_t WRP2; __IO uint16_t WRP3; OB_TypeDef; /** * @brief 灵活的静态存储控制器 */灵活的静态存储控制器 FSMC(灵活静态存储控制器,动力存储存储控制器)是 STM32 系列采用一种新型的新兴扩展技术。独特的优势,可根据系统的应用需要,地网求方便进行不同类型大容量静态存储器的扩展。 FSMC优势技术①请立即获取iTunes多种静态存储器类型.STM32通过FSMC可以与SRAM,ROM,PSRAM,NOR闪存和NAND Flash的存储器的引脚直接相连。 ②请立即获取iTunes丰富的存储操作方法.FSMC不仅支持多种数据宽度的异步读/写操作,而且支持对NOR / PSRAM / NAND存储器的同步突发访问方式。 ③请立即获取iTunes同时扩展多种存储器.FSMC映射的地址空间中,不同的BANK是独立的,用于柯林斯扩展不同类型的存储器。系统-当扩展中使用状语从句:多个外部存储器时,FSMC通过会总线悬空延迟时间参数的设置,防止各存储器对总线的访问冲突。 ④请立即获取iTunes更为广泛的存储器添加新库存型号。通过对FSMC的时间参数设置,了扩大系统-中可用存储器的速度范围,用户为提供了灵活的存储芯片选择空间。 ⑤支持代码从FSMC扩展的外部存储器中直接运行,而不需要首先调入内部SRAM。 typedef结构 { __IO uint32_t的BTCR; [8] FSMC_Bank1_TypeDef; /** * @brief Flexible Static Memory Controller Bank1E */ FSMC映射地址空间FSMC管理1GB的映射地址空间。空间划分为4个大小为256 MB的BANK,每个BANK又划分为4个64 MB的子BANK,如表1一组。FSMC的2个控制器管理的映射地址空间不同。NOR Flash控制器管理第1个BANK,NAND/PC卡控制器管理第2~4个BANK。由于两个控制管理器的存储器类型不同,扩展时应根据选用的存储设备类型确定其映射位置。其中,BANK1的4个子BANK独立拥有的片选线状语从句:控制寄存器,可分别扩展一个独立的存储设备,而BANK2〜 BANK4 只有一种选择控制。 typedef struct { __IO u32_t BWTR[7]; } FSMC_Bank1E_TypeDef;那么这里就是FSMC的BANK1的结构体定义 /** * @brief 灵活的静态内存控制器 Bank2 */ typedef struct { __IO uint32_t PCR2; __IO uint32_t SR2; __IO uint32_t PMEM2; __IO uint32_t PATT2; uint32_t 保留 0; __IO uint32_t ECCR2; FSMC_Bank2_TypeDef; /** * @brief 灵活的静态内存控制器 Bank3 */ typedef struct { __IO uint32_t PCR3; __IO uint32_t SR3; __IO uint32_t PMEM3; __IO uint32_t PATT3; uint32_t 保留 0; __IO uint32_t ECCR3; FSMC_Bank3_TypeDef; /** * @brief 灵活的静态内存控制器 Bank4 */ ------------------------------------------------ -------------------------------------------------- -------------------------------------------------- ----------- --------------------------------------- -------------------------------------------------- -------------------------------------------------- --------------------- typedef struct { __IO uint32_t PCR4; __IO uint32_t SR4; __IO uint32_t PMEM4; __IO uint32_t PATT4; __IO uint32_t PIO4; FSMC_Bank4_TypeDef; /** * @brief 通用 I/O */ 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; CRL,CRH,IDR,ODR都是等一个端口中的寄存器,对寄存器的读写操作实现你需要的功能.STM32的每个IO端口都有7个寄存器来控制他们分别是:配置模式的2一个3位的端口配置CRL和CRH;22个32位的数据锁IDR和ODR;1个32位的置位/存投资BSRR;一个16位的固定资产BRR;1个32位的锁银行LCKR 在 该参数中选择设置待GPIO管脚,操作符“|”使用一次可以选中多个管脚 。GPIO_Pin_None:管脚被选中 GPIO_Pin_x:选中管脚x(0) --15) GPIO_Pin_All:选中全部管脚 GPIO_Speed : GPIO_Speed: GPIO_Speed:设置输入管脚的速度。 GPIO_Speed_10MHz:最高输出速率10MHz GPIO_Speed_2MHz:最高输出速率2MHz GPIO_Speed_50MHz:输出工作速率50MHz GPIO_Mode GPIO_Mode:获取输入管脚的最高 状态。 GPIO_Mode_AIN:模拟 GPIO_Mode:_IN_FLOATING空输入 GPIO_Mode_IPD:下拉输入 GPIO_Mode_IPD:上拉输入 GPIO_Mode_IPU:上拉输入 GPIO_Mode_OD:开 GPIO输出 _Mode_OutPP:推挽输出 GPIO_Mode_AF_OD:个别开漏输出 GPIO_Mode_AF_PP:推挽输出 功能 GPIO_StructInit 功能描述:GPIO_InitStruct中按每个参数值填入 例如: GPIO_InitTypeDef GPIO_InitStructure; GPIO_StructInit(&GPIO_InitStructure); GPIO_InitStruct: GPIO_Pin:GPIO_Pin_All GPIO_Speed:GPIO_Speed_2MHz GPIO_Mode:GPIO_Mode_IN_FLOATING 函数GPIO_ReadInputDataBit 功能描述:读取指定端口管脚的输入示例 : u8 ReadValue; ReadValue = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_7); 函数GPIO_ReadInputData 描述描述:读取指定的GPIO端口功能输入 示例 : u16 ReadValue; ReadValue = GPIO_ReadInputData(GPIOC); 函数GPIO_ReadOutputDataBit 功能描述:读取指定端口管脚的输出示例 : u8 ReadValue; ReadValue = GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_7); 函数GPIO_ReadOutputData 描述:读取指定的GPIO端口功能输出 示例 : u16 ReadValue; ReadValue = GPIO_ReadOutputData(GPIOC); 函数GPIO_SetBits 功能描述:置位指定的数据端口位 示例 : GPIO_SetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15); 函数GPIO_ResetBits 功能描述:清除指定的数据端口位 示例 : GPIO_ResetBits(GPIOA,GPIO_Pin_10 | GPIO_Pin_15); 函数GPIO_WriteBit 功能描述:或者设置指定清除的数据端口位 译文: GPIO_WriteBit(GPIOA,GPIO_Pin_15,BIT_SET); 函数GPIO_Write 功能描述:向指定GPIO端口数据写入数据 译文: GPIO_Write( GPIOA, 0x1101); 函数GPIO_PinLockConfig 功能描述:锁定GPIO管脚设置传感器示例 : GPIO_PinLockConfig(GPIOA, GPIO_Pin_0 | GPIO_Pin_1); 函数GPIO_EventOutputConfig 功能:选择GPIO管脚描述事件输出示例 : GPIO_EventOutputConfig(GPIO_PortSourceGPIOE, GPIO_PinSource5); GPIO_PortSource GPIO_PortSource用以选择用作事件输出的GPIO端口。 GPIO_PinSource GPIO_PinSource用以选择用作事件输出的GPIO管脚。 函数GPIO_EventOutputCmd 功能描述:能使失或者能事件输出 译文: GPIO_EventOutputConfig(GPIO_PortSourceGPIOC,GPIO_PinSource6); GPIO_EventOutputCmd(ENABLE); 函数GPIO_PinRemapConfig 功能描述:改变指定管脚的映射 示例 : GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE); GPIO_Remap_ 重新映射选择手机户外输出的GPIO端口。 GPIO_Remap_Remap_GPIO_Remap_I2C1: I2C1手机功能映射 GPIO_Remap_USART1:USART1手机功能映射 GPIO_PartialRemap_USART3:USART2手机手机功能映射 GPIO_FullRemap_USART3:USART3手机 手机功能映射 GPIO_PartialRemap_功能TIM1:RemapT3UART1手机功能图完全映射 GPIO_PartialRemap1_TIM2:TIM2复用功能部分映射1 GPIO_PartialRemap2_TIM2:TIM2复用功能部分映射2 GPIO_FullRemap_TIM2:TIM2复用功能完全映射 GPIO_PartialRemap_TIM3:TIM3复用功能部分映射 GPIO_FullRemap_TIM3:TIM3复用功能完全映射 GPIO_Remap_TIM4:TIM4复用功能映射 GPIO_CANGPIO_CAN_CAN_CAN备份功能地图1 GPIO_Remap2_CAN:CAN 完全除功能映射2 GPIO_Remap_PD01:PD01 个别功能 失映射 GPIO_Remap_SWJ_NoJTRST:JTRST外SWJ完全使能(JTAG+SW-DP) GPIO_Remap_SWJ_JTAGDisable:JTAG-DP失能+SW-DP使能 GPIO_Remap_SWJ_Disable (JTAG+SW-DP) 函数GPIO_EXTILineConfig 功能描述:选择GPIO管脚线外部中断线路 示例 : GPIO_EXTILineConfig(GPIO_PortSource_GPIOB, GPIO_PinSource8); /** * @brief 备用函数 I/O */ typedef struct { __IO uint32_t EVCR; __IO uint32_t MAPR; __IO uint32_t EXTICR[4]; uint32_t 保留 0; __IO uint32_t MAPR2; AFIO_TypeDef; 复用功能寄存器结构,也就是说这里可以把IO做复用。 / ** * @brief内部集成电路接口 * / typedef结构I2C结构体类型,这里面的全部是数据寄存器。 { __IO uint16_t CR1; uint16_t 保留 0; __IO uint16_t CR2; uint16_t 保留 1; __IO uint16_t OAR1; uint16_t RESERVED2; __IO uint16_t OAR2; uint16_t RESERVED3; __IO uint16_t DR; uint16_t RESERVED4; __IO uint16_t SR1; uint16_t RESERVED5; __IO uint16_t SR2; uint16_t RESERVED6; __IO uint16_t CCR; uint16_t RESERVED7; __IO uint16_t TRISE; uint16_t RESERVED8; I2C_TypeDef; / ** * @brief独立WATCHDOG * / 在键值寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗;此时计数器开始从其复 。位值0xFFF的递减计数当计数器计数到末尾量0x000时,会产生一个复位信号(IWDG_RESET)。 无论何时,只要键寄存器IWDG_KR中被写入加上0xAAAA,IWDG_RLR的中值就会被重新加载 到计数器位中从而避免产生看门狗复位。 IWDG_PR和IWDG_RLR寄存器具有写保护功能。要修改这两个智能的值,必须先向IWDG_KR 磁中写入0x5555。 被保护。重编程操作(即写入0xAAAA)也会启动写保护功能。 还有两个磁铁,一个预分频寄存器(IWDG_PR),该选择保护设置门狗的分频因子 。另一个重滤波器 只有。该选择保存重模块到语音中的值。该判断是一个 32 位滤波器,但 12 位是有效的。 只要对以上三个低 滤波器进行相应的设置,我们就可以启动 STM32的独立看门狗。 那么这个就是看门狗定义的结构体类型。 typedef结构 { __IO uint32_t的KR; __IO uint32_t PR; __IO uint32_t RLR; __IO uint32_t SR; } IWDG_TypeDef; /** * @brief 电源控制 */ typedef struct { __IO uint32_t CR; __IO uint32_t CSR; PWR_TypeDef; CR; //电源控制vu32 CSR; //电源控制状态音乐 /** * @brief Reset and Clock Control */ typedef struct { __IO uint32_t CR; __IO uint32_t CFGR; __IO uint32_t CIR; __IO uint32_t APB2RSTR; __IO uint32_t APB1RSTR; __IO uint32_t AHBENR; __IO uint32_t APB2ENR; __IO uint32_t APB1ENR; __IO uint32_t BDCR; __IO uint32_t CSR; #ifdef STM32F10X_CL __IO uint32_t AHBRSTR; __IO uint32_t CFGR2; #endif /* STM32F10X_CL */ #if 定义 (STM32F10X_LD_VL) || 定义 (STM32F10X_MD_VL) || 定义 (STM32F10X_HD_VL) uint32_t RESERVED0; __IO uint32_t CFGR2; #endif /* STM32F10X_LD_VL || STM32F10X_MD_VL || STM32F10X_HD_VL */ } RCC_TypeDef; 。 宏定义是把RCC宏定义到stm32RCC寄存器的分配的单元的首地址上,其中RCC_TypeDefstm32f10x_map.h中定义的结构,这个是RCC所有电阻构成的 --------- -------------------------------------------------- -------------------------------------------------- ----------------------------------------------- ------ -------------------------------------------------- -------------------------------------------------- ----------------------------------------------- //本仅供学习使用,若用于工程应用,请仔细检查 //主要针对ST公司的库存文件stm32f10x.h进行解析 //修改日期:2014/6 //Copyright(C) 2014-2025 //All rights reserved //**************************** ****************************************************** **** * / / ** * @brief 实时时钟 * / RTC预分频器余数寄存器高位(RTC_DIVH) RTC预分频器余数寄存器低位(RTC_DIVL) RTC控制寄存器高位(RTC_CRH) RTC控制寄存器低位(RTC_CRL) RTC 预分频手机内存高位(RTC_PRLH) RTC 预分频媒体低位(RTC_PRLL) RTC 收音机 高位(RTC_CNTH) RTC手机低位(RTC_CNTL) RTC闹手机位高(RTC_ALRH) RTC 闹 手机低位( RTC_ALRL) typedef struct { __IO uint16_t CRH; uint16_t 保留 0; RTC寄存器是16位可寻址寄存器,这是定义它的数据类型为16位的。 __IO uint16_t CRL; uint16_t 保留 1; __IO uint16_t PRLH; uint16_t RESERVED2; __IO uint16_t PRLL; uint16_t RESERVED3; __IO uint16_t DIVH; uint16_t RESERVED4; __IO uint16_t DIVL; uint16_t RESERVED5; __IO uint16_t CNTH; uint16_t RESERVED6; __IO uint16_t CNTL; uint16_t RESERVED7; __IO uint16_t ALRH; uint16_t RESERVED8; __IO uint16_t ALRL; uint16_t RESERVED9; } RTC_TypeDef; /** * @brief SD 主机接口 SD卡接口 */ SDIO 电源控制电路(SDIO_POWER) SDIO 控制寄存器(SD_CLKCR) SDIO 参数寄存器(SDIO_ARG) SDIO指令 (SDIO_CMD) SDIO指令响应请求(SDIO_RESPCMD) SDIO响应1..4(SDIO_RESPx) SDIO数据像素控制器(SDIO_DTIMER) SDIO数据长度控制器(SDIO_DLEN) SDIO数据控制控制器(SDIO_DCTRL) SDIO数据传感器采集( SDIO_DCOUNT) SDIO 状态寄存器 (SDIO_STA) SDIO 清除擦除寄存器(SDIO_过滤器) SDIO 屏蔽屏蔽IC(SDIO_MASK) SDIO FIFO单独寄存器(SDIO_FIFO_FIFO) SDIO 数据FIFO 寄存器(SDIO_FIFO) typedef struct { __IO uint32_t POWER; __IO uint32_t CLKCR; __IO uint32_t ARG; __IO uint32_t CMD; __I uint32_t RESPCMD; __I uint32_t RESP1; __I uint32_t RESP2; __I uint32_t RESP3; __I uint32_t RESP4; __IO uint32_t DTIMER; __IO uint32_t DLEN; __IO uint32_t DCTRL; __I uint32_t DCOUNT; __I uint32_t STA; __IO uint32_t ICR; __IO uint32_t 掩码; uint32_t RESERVED0[2]; __I uint32_t FIFOCNT; uint32_t 保留 1[13]; __IO uint32_t FIFO; SDIO_TypeDef; /** * @brief 串行外设接口------------- SPI 总线 */ SPI 控制接口1(SPI_CR1) SPI 控制智能2(SPI_CR2) SPI 状态寄存器(SPI_SR) SPI 数据 SPI(SPI_ ) SPI CRC 授权DR(SPI_CRCPR) SPI Rx CRCPR(SPI_CRCR) SPI Tx CRC(SPI_TXCRCR) SPI_I2S配置寄存器(SPI_I2S_CFGR) SPI_I2S预分频(SPI_I2SPR) typedef struct { __IO uint16_t CR1; uint16_t 保留 0; __IO uint16_t CR2; uint16_t 保留 1; __IO uint16_t SR; uint16_t RESERVED2; __IO uint16_t DR; uint16_t RESERVED3; __IO uint16_t CRCPR; uint16_t RESERVED4; __IO uint16_t RXCRCR; uint16_t RESERVED5; __IO uint16_t TXCRCR; uint16_t RESERVED6; __IO uint16_t I2SCFGR; uint16_t RESERVED7; __IO uint16_t I2SPR; uint16_t RESERVED8; } SPI_TypeDef; / ** * @brief TIM 高级控制定时器(TIM1和TIM8)由一个16位的自动装载计数器组成,它由一个可编程的预分频器驱动。 它适合多种用途,包含测量输入信号的脉冲宽度(输入输出),或者产生输出结果(输出比较、 PWM,嵌入死区时间的互补PWM等)。 使用定时器预分频器和RCC时钟控制预分频器,实现可以脉冲宽度状语从句:波形周期从几个微秒到几 个毫秒的调节。 高级控制定时(TIM1和TIM8)和通用定时器(TIMx)是完全独立的,它们不共享任何资源。它们同步 操作。 控制控制器1 (TIMx_CR1)控制器2(TIMx_CR2) 从模式控制控制器(TIMx_SMCR ) DMA/破坏使能应用(TIMx_DIER) 状态橡胶(TIMx_DIER) 事件生产制造(TIMx_EGR) /比较玩具模式1(TIMx_CCMR1) /比较玩具模式2(TIMx_CCMR2) /比较使限制(TIMx_CCER) 电动 (TIMx_CNT) 预分频(TIMx_CCR2) 自动重频(TIMx_PsC)自动重牙内存(TIMx_ARR) 重复像素记忆(TIMx_RCR) /比较艺术1(TIMx_CCR1) /比较歧视2(TIMx_CCR2) /比较爱好3(TIMx_CCR3) /比较爱好(TIMx_CCR4) 刹车和死区磁铁TR(TIMx_BD) DMA控制智能(TIMx_DCR) 连续模式的DMA地址(TIMx_DMAR) 。这个结构体就是以上这些寄存器的类型定义 * / typedef结构 { __IO uint16_t CR1; uint16_t 保留 0; __IO uint16_t CR2; uint16_t 保留 1; __IO uint16_t SMCR; uint16_t RESERVED2; __IO uint16_t DIER; uint16_t RESERVED3; __IO uint16_t SR; uint16_t RESERVED4; __IO uint16_t 废气再循环; uint16_t RESERVED5; __IO uint16_t CCMR1; uint16_t RESERVED6; __IO uint16_t CCMR2; uint16_t RESERVED7; __IO uint16_t CCER; uint16_t RESERVED8; __IO uint16_t CNT; uint16_t RESERVED9; __IO uint16_t PSC; uint16_t 保留 10; __IO uint16_t ARR; uint16_t RESERVED11; __IO uint16_t RCR; uint16_t 保留12; __IO uint16_t CCR1; uint16_t RESERVED13; __IO uint16_t CCR2; uint16_t RESERVED14; __IO uint16_t CCR3; uint16_t RESERVED15; __IO uint16_t CCR4; uint16_t RESERVED16; __IO uint16_t BDTR; uint16_t RESERVED17; __IO uint16_t DCR; uint16_t RESERVED18; __IO uint16_t DMAR; uint16_t RESERVED19; } TIM_TypeDef; /** * @brief 通用同步异步接收器发送器 * /在UART上追加同步方式的序列信号变换电路的产品,被称为USART(通用同步异步收发器)。 状态寄存器(USART_SR) 数据寄存器(USART_DR) 波特比率寄存器(USART_BRR) 控制寄存器1(USART_CR1 ) 控制滤波器2(USART_CR2) 控制寄存器 3(USART_CR3) 保护时间和预分频滤波器(USART_GTPR) typedef struct { __IO uint16_t SR; uint16_t 保留 0; __IO uint16_t DR; uint16_t 保留 1; __IO uint16_t BRR; uint16_t RESERVED2; __IO uint16_t CR1; uint16_t RESERVED3; __IO uint16_t CR2; uint16_t RESERVED4; __IO uint16_t CR3; uint16_t RESERVED5; __IO uint16_t GTPR; uint16_t RESERVED6; USART_TypeDef; /** * @brief 窗口看门狗 */ typedef struct { __IO uint32_t CR; __IO uint32_t CFR; __IO uint32_t SR; WWDG_TypeDef; /** * @} */ /** @addtogroup Peripheral_memory_map * @{ */ #define FLASH_BASE ((uint32_t)0x08000000) /*!《 别名区域中的FLASH基地址 在Alias地区Flash基址*/ #define SRAM_BASE ((uint32_t)0x20000000) /*!《别名区域中的SRAM基地址*/ #define PERIPH_BASE ((uint32_t)0x40000000) /*!《别名区域中的外设基地址*/ #define SRAM_BB_BASE ((uint32_t)0x22000000) /*!《位带区域中的SRAM基地址*/ #define PERIPH_BB_BASE (uint32_t)0x42000000) /*!《 位带区域中的外设基地址 */ #define FSMC_R_BASE ((uint32_t)0xA0000000) /*!《 FSMC 寄存器基地址 */ /*!《 外设存储器映射 */ #define APB1PERIPH_BASE PERIPH_BASE #define APB2PERIPH_BASE (PERIPH_BASE + 0x10000) #define AHBPERIPH_BASE (PERIPH_BASE + 0x20000) #define TIM2_BASE (APB1PERIPH_BASE + 0x0000) #define APB10BASE_0BASE_X 的#define TIM4_BASE(APB1PERIPH_BASE +为0x0800) 的#define TIM5_BASE(APB1PERIPH_BASE + 0x0C00) 的#define TIM6_BASE(APB1PERIPH_BASE + 0×1000) 的#define TIM7_BASE(APB1PERIPH_BASE +从0x1400) 的#define TIM12_BASE(APB1PERIPH_BASE + 0x1800开始) 的#define TIM13_BASE(APB1PERIPH_BASE + 0x1C00) 的#define TIM14_BASE(APB1PERIPH_BASE +为0x2000) 的#define RTC_BASE(APB1PERIPH_BASE + 0x2800) 的#define WWDG_BASE(APB1PERIPH_BASE + 0x2C00) 的#define IWDG_BASE(APB1PERIPH_BASE + 0x3000处) 的#define SPI2_BASE(APB1PERIPH_BASE + 0x3800) 的#define SPI3_BASE(APB1PERIPH_BASE + 0x3C00) 的#define USART2_BASE(APB1PERIPH_BASE + 0x4400) 的#define USART3_BASE(APB1PERIPH_BASE + 0x4800) 的#define UART4_BASE(APB1PERIPH_BASE + 0x4C00) 的#define UART5_BASE(APB1PERIPH_BASE + 0x5000处) 的#define I2C1_BASE(APB1PERIPH_BASE + 0x5400) 的#define I2C2_BASE(APB1PERIPH_BASE + 0x5800) 的#define CAN1_BASE (APB1PERIPH_BASE + 0x6400) #define CAN2_BASE (APB1PERIPH_BASE + 0x6800) #define BKP_BASE (APB1PERIPH_BASE + 0x6C00) #define PWR_BASE (APB1PERIPH_BASE) + 0x70000x70000x7000BASE_PWR_BASE (APB1PERIPH_BASE_0x700BASE00x7000BASE00x7000BASEH) 的#define AFIO_BASE(APB2PERIPH_BASE + 0×0000) 的#define EXTI_BASE(APB2PERIPH_BASE +的0x0400) 的#define GPIOA_BASE(APB2PERIPH_BASE +为0x0800) 的#define GPIOB_BASE(APB2PERIPH_BASE + 0x0C00) 的#define GPIOC_BASE(APB2PERIPH_BASE + 0×1000) 的#define GPIOD_BASE(APB2PERIPH_BASE +从0x1400) 的#define (TIOE_BASE (APB2PERIPH_BASE + 0x1800) #define GPIOF_BASE (APB2PERIPH_BASE + 0x1C00) #define GPIOG_BASE (APB2PERIPH_BASE + 0x2000) #define ADC1_BASE (APB2PERIPH_BASE + 0x24200BASE) #define APB2PERIPH_BASE + 0x24200BASEH_BASEH_BASEAPH_BASE_0x24200x100BASE_0x2420BASEH 的#define SPI1_BASE(APB2PERIPH_BASE + 0x3000处) 的#define TIM8_BASE(APB2PERIPH_BASE + 0x3400) 的#define USART1_BASE(APB2PERIPH_BASE + 0x3800) 的#define ADC3_BASE(APB2PERIPH_BASE + 0x3C00) 的#define TIM15_BASE(APB2PERIPH_BASE + 0x4000的) 的#define TIM16_BASE(APB2PERIPH_BASE + 0x4400) 的#define TIM17_BASE (APB2PERIPH_BASE + 0x4800) #define TIM9_BASE (APB2PERIPH_BASE + 0x4C00) #define TIM10_BASE (APB2PERIPH_BASE + 0x5000) #define TIM11_BASE (APB2PERIPH_BASE + 0x4800) #define TIM11_BASE (APB2PERIPH_4BASE0 ) #define TIM9_BASE (APB2PERIPH_BASE + 0x4C00) #define TIM11_BASE + 0x50BASE00BASE00BASE00BASEH_10BASEH_10BASEH_10BASEH_10BASEH_10BASEH_10BASEH_10BASEH_10BASE0_0x50BASEH 的#define DMA1_Channel1_BASE(AHBPERIPH_BASE + 0×0008) 的#define DMA1_Channel2_BASE(AHBPERIPH_BASE + 0x001C) 的#define DMA1_Channel3_BASE(AHBPERIPH_BASE + 0x0030) 的#define DMA1_Channel4_BASE(AHBPERIPH_BASE + 0x0044) 的#define DMA1_Channel5_BASE(AHBPERIPH_BASE + 0x0058) 的#define DMA1_Channel6_BASE(AHBPERIPH_BASE + 0x006C) 的#define DMA1_Channel7_BASE(AHBPERIPH_BASE + 0x0080)具有 的#define DMA2_BASE(AHBPERIPH_BASE +的0x0400) 的#define DMA2_Channel1_BASE(AHBPERIPH_BASE + 0x0408) 的#define DMA2_Channel2_BASE(AHBPERIPH_BASE + 0x041C) 的#define DMA2_Channel3_BASE(AHBPERIPH_BASE +法语-标准) 的#define DMA2_Channel4_BASE(AHBPERIPH_BASE + 0x0444) 的#define DMA2_Channel5_BASE(AHBPERIPH_BASE + 0x0458) 的#define RCC_BASE(AHBPERIPH_BASE + 0×1000) 的#define CRC_BASE(AHBPERIPH_BASE + 0x3000处) 的#define FLASH_R_BASE(AHBPERIPH_BASE +为0x2000)/ * 《!闪存寄存器的基地址* / #定义OB_BASE((uint32_t的)0x1FFFF800 ) /*!《 Flash Option Bytes base address */ #define ETH_BASE (AHBPERIPH_BASE + 0x8000) #define ETH_MAC_BASE (ETH_BASE) #define ETH_MMC_BASE (ETH_BASE + 0x0100) #define ETH_PTP_BASE (ETH_BASE + 0x07_00) #define ETH_BASE + 0x07_00) #define ETH_000 ) #define ETH_MAC_BASE (ETH_BASE) #define FSMC_Bank1_R_BASE (FSMC_R_BASE + 0x0000) /*!《 FSMC Bank1 寄存器基地址 */ #define FSMC_Bank1E_R_BASE (FSMC_R_BASE + 0x0104) /*!《 FSMC Bank1E 寄存器基址 */ #define FSMC_Bank2_R_BASE (FSMC_R_BASE + 0x0060) /*!《 FSMC Bank2寄存器基址 */ #define FSMC_BankMC3_R_BASE_0xR_BASE_0xR_BASE +/*R_BASE0) FSMC Bank3寄存器基地址 */ #define FSMC_Bank4_R_BASE (FSMC_R_BASE + 0x00A0) /*!《 FSMC Bank4 寄存器基地址 */ #define DBGMCU_BASE ((uint32_t)0xE0042000) /*!《 调试 MCU 寄存器基地址 */ ---- -------------------------------------------------- -------------------------------------------------- ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- --- /**************************************************** ********************************/ /* Peripheral Registers_Bits_Definition 、 翻转电阻位定义 */ /**** ****************************************************** ************************/ /************************ ****************************************************** ****/ /* */ /* CRC 计算单元 */ /* CRC 校验单元 */ /************************************* ****************************************/ /************ ******** CRC_DR 寄存器的位定义 *********************/ #define CRC_DR_DR ((uint32_t)0xFFFFFFFF) /*!《 数据寄存器位数据寄存器位*/ 数据 寄存器(CRC_DR) /******************* CRC_IDR寄存器的位定义************** ******/ #define CRC_IDR_IDR ((uint8_t)0xFF) /*!《 通用8位数据寄存器位通用8位寄存器*/ 独立数据寄存器(CRC_IDR) 控制寄存器(CRC_CR) /*** ***************** CRC_CR 寄存器的位定义 ********************/ #define CRC_CR_RESET ((uint8_t)0x01) /*!《 RESET bit 重启位*/ /********************************** ****************************************************/ / * */ /* 电源控制 */ /* */ /**************************************** ********************************************/ /****** ************** PWR_CR 寄存器的位定义 ********************/ #define PWR_CR_LPDS ((uint16_t)0x0001) / *!《 低功耗 Deepsleep */ #define PWR_CR_PDDS ((uint16_t)0x0002) /*!《 Power Down Deepsleep */ #define PWR_CR_CWUF ((uint16_t)0x0004) /*!《 清除唤醒标志 */ #define PWR_CR_CSBF ((uint16_t8)0x!0 Clear /*待机标志 */ #define PWR_CR_PVDE ((uint16_t)0x0010) /*!《 电源电压检测器使能 */ #define PWR_CR_PLS ((uint16_t)0x00E0) /*!《 PLS[2:0] 位(PVD 电平选择)*/ #define PWR_CR_PLS_0 ((uint16_t)0x0020) /*!《 Bit 0 */ #define PWR_CR_PLS_1 ((uint16_t)0x0040) /*!《 Bit 1 */ #define PWR_CR_PLS_2 ((uint16_t)0x0x008位 2 */ / * 《!PVD级配置* / #定义PWR_CR_PLS_2V2((uint16_t)0×0000)/ * 《!PVD水平2.2V * / #定义PWR_CR_PLS_2V3((uint16_t)0×0020)/ * 《!PVD水平2.3V * / #定义PWR_CR_PLS_2V4 ((uint16_t)0x0040) /*!《 PVD 电平 2.4V */ #define PWR_CR_PLS_2V5 ((uint16_t)0x0060) /*!《 PVD 电平 2.5V */ #define PWR_CR_PLS_2V6 ((uint16_t)0D 电平2.6V */ #define PWR_CR_PLS_2V7 ((uint16_t)0x00A0) /*!《 PVD 电平 2.7V */ #define PWR_CR_PLS_2V8 ((uint16_t)0x00C0) /*!《 PVD 电平 2.8V */ #define PWR_CR_PLS_2V9 ((uint16_t)0x00E0) /*!《 PVD level 2.9V */ #define PWR_CR_DBP ((uint16_t)0x0100) /*!《 禁用备份域写保护*/ /********** ********* PWR_CSR 寄存器的位定义 ********************/ #define PWR_CSR_WUF ((uint16_t)0x0001) /*!《 唤醒标志*/ #define PWR_CSR_SBF ((uint16_t)0x0002) /*!《 待机标志 */ #define PWR_CSR_PVDO ((uint16_t)0x0004) /*!《 PVD 输出 */ #define PWR_CSR_EWUP ((uint16_t)0x0x0100) 启用WKUP 引脚 */ /************************************************* ************************************/ /* */ /* 备份寄存器 */ /* */ /*************************************** ************************************************/ /***** ************** BKP_DR1 寄存器的位定义 ********************/ #define BKP_DR1_D ((uint16_t)0xFFFF) / *!《 备份数据 */ /******************* BKP_DR2 寄存器的位定义 ******************** **/ #define BKP_DR2_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************* BKP_DR3 寄存器的位定义 ***** ***************/ #define BKP_DR3_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************* BKP_DR4 寄存器的位定义 ******** ************/ #define BKP_DR4_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************* BKP_DR5 寄存器的位定义 ********************/ #define BKP_DR5_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /****** ************* BKP_DR6 寄存器的位定义 ********************/ #define BKP_DR6_D ((uint16_t)0xFFFF) /* !《 备份数据 */ /******************* BKP_DR7 寄存器的位定义 ******************* */ #define BKP_DR7_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************* BKP_DR8 寄存器的位定义 ******** ************/ #define BKP_DR8_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************* BKP_DR9 寄存器的位定义 ********************/ #define BKP_DR9_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /****** ************* BKP_DR10 寄存器的位定义 *******************/ #define BKP_DR10_D ((uint16_t)0xFFFF) /*! 《 备份数据 */ /******************* BKP_DR11 寄存器的位定义 *******************/ #define BKP_DR11_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************* BKP_DR12 寄存器的位定义 ******** ***********/ #define BKP_DR12_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************* 位BKP_DR13 寄存器定义 *******************/ #define BKP_DR13_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******** *********** BKP_DR14 寄存器的位定义 *******************/ #define BKP_DR14_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************** BKP_DR15 寄存器的位定义 *******************/ #define BKP_DR15_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************* BKP_DR16 寄存器的位定义 ******** ***********/ #define BKP_DR16_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************* 位BKP_DR17 寄存器定义 *******************/ #define BKP_DR17_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******** ********** BKP_DR18 寄存器的位定义 ********************/ #define BKP_DR18_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************** BKP_DR19 寄存器的位定义 *******************/ #define BKP_DR19_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************* BKP_DR20 寄存器的位定义 ******** ***********/ #define BKP_DR20_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************* 位BKP_DR21 寄存器定义 *******************/ #define BKP_DR21_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******** *********** BKP_DR22 寄存器的位定义 *******************/ #define BKP_DR22_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************** BKP_DR23 寄存器的位定义 *******************/ #define BKP_DR23_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************* BKP_DR24 寄存器的位定义 ******** ***********/ #define BKP_DR24_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************* 位BKP_DR25 寄存器定义 ********************/ #define BKP_DR25_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******** *********** BKP_DR26 寄存器的位定义 *******************/ #define BKP_DR26_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************** BKP_DR27 寄存器的位定义 *******************/ #define BKP_DR27_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************* BKP_DR28 寄存器的位定义 ******** ***********/ #define BKP_DR28_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************* 位BKP_DR29 寄存器定义 *******************/ #define BKP_DR29_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******** *********** BKP_DR30 寄存器的位定义 *******************/ #define BKP_DR30_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************** BKP_DR31 寄存器的位定义 *******************/ #define BKP_DR31_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************* BKP_DR32 寄存器的位定义 ******** ***********/ #define BKP_DR32_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************* 位BKP_DR33 寄存器定义 ********************/ #define BKP_DR33_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******** *********** BKP_DR34 寄存器的位定义 *******************/ #define BKP_DR34_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************** BKP_DR35 寄存器的位定义 *******************/ #define BKP_DR35_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************* BKP_DR36 寄存器的位定义 ******** ***********/ #define BKP_DR36_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************* 位BKP_DR37 寄存器定义 ********************/ #define BKP_DR37_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******** *********** BKP_DR38 寄存器的位定义 *******************/ #define BKP_DR38_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************** BKP_DR39 寄存器的位定义 *******************/ #define BKP_DR39_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************* BKP_DR40 寄存器的位定义 ******** ***********/ #define BKP_DR40_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******************* 位BKP_DR41 寄存器定义 ********************/ #define BKP_DR41_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /******** *********** BKP_DR42 寄存器的位定义 *******************/ #define BKP_DR42_D ((uint16_t)0xFFFF) /*!《 备份数据 */ /****************** BKP_RTCCR 寄存器的位定义 *******************/ #define BKP_RTCCR_CAL ((uint16_t)0x007F) /*!《 校准值 */ #define BKP_RTCCR_CCO ((uint16_t)0x0080) /*!《 校准时钟输出 */ #define BKP_RTCCR_ASOE ((uint10x ! 1_t)0)第二个输出使能 */ #define BKP_RTCCR_ASOS ((uint16_t)0x0200) /*!《 报警或第二个输出选择 */ /******************** BKP_CR 的位定义register ********************/ #define BKP_CR_TPE ((uint8_t)0x01) /*!《 TAMPER pin enable */ #define BKP_CR_TPAL ((uint8_t)0x02) / *!《 TAMPER 引脚有效电平 */ /******************* BKP_CSR 寄存器的位定义 ********************/ #define BKP_CSR_CTE ( (uint16_t)0x0001) /*!《 清除篡改事件 */ #define BKP_CSR_CTI ((uint16_t)0x0002) /*!《 清除篡改中断 */ #define BKP_CSR_TPIE ((uint16_t)0x0004) /*!《 TAMPER Pin / #define BKP_CSR_TEF ((uint16_t)0x0100) /*!《 篡改事件标志 */ #define BKP_CSR_TIF ((uint16_t)0x0200) /*!《 篡改中断标志 */ /************ ****************************************************** ****************/ /* */ /* 复位和时钟控制 */ /* */ /***************************************** ********************************************/ / ******** ************* RCC_CR 寄存器的位定义 ********************/ #define RCC_CR_HSION ((uint32_t)0x00000001) /* !《 内部高速时钟使能 */ #define RCC_CR_HSIRDY ((uint32_t)0x00000002) /*!《 内部高速时钟就绪标志 */ #define RCC_CR_HSITRIM ((uint32_t)0x000000F8) /*!《 内部高速时钟修整 */ #define RCC_CR_HSICAL ((uint32_t)0x0000FF00) /*!《 内部高速时钟校准 */ #define RCC_CR_HSEON ((uint32_t)0x00010000) /*!《 外部高速时钟使能 */ #define RCC_CR_HSERDY ((uint32_t) /20x00) *!《 外部高速时钟就绪标志 */ #define RCC_CR_HSEBYP ((uint32_t)0x00040000) /*!《 外部高速时钟旁路 */ #define RCC_CR_CSSON ((uint32_t)0x00080000) /*!《 时钟安全系统使能 */ #define RCC_CR_PLLON ((uint32_t)0x01000000) /*!《 PLL使能*/ #define RCC_CR_PLLRDY ((uint32_t)0x02000000) /*!《 PLL 时钟就绪标志 */ #ifdef STM32F10X_CL #define RCC_CR_PLL2ON ((uint32_t)0x04000000) /*!《 PLLCC使能 */ #define R000000) */ CR00000000000000000 */ CRCC 《!PLL2时钟就绪标志* / #定义RCC_CR_PLL3ON((uint32_t的)0x10000000的)/ * 《!PLL3启用* / #定义RCC_CR_PLL3RDY((uint32_t的)0x20000000)/ * 《!PLL3时钟就绪标志* / #ENDIF / * * STM32F10X_CL / ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ---- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- --- 结束了。这个文件应该已经结束了,剩下的就是相关控制位的定义了。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1936浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
729浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
569浏览 3评论
594浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
552浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 18:15 , Processed in 0.623543 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号