现在的位置: 首页 > 综合 > 正文

stm32f10x.h阅读记录

2019年03月25日 ⁄ 综合 ⁄ 共 2623字 ⁄ 字号 评论关闭

本文是stm32f10x.h前半部分的阅读记录,总结了网友的使用经验。

stm32f10x.h版本号 3.5.0

**********************************************************************

C/C++编译器
**********************************************************************

#ifdef __cplusplus   //见博客
 extern "C" {
#endif 

**********************************************************************
时钟
**********************************************************************

#define HSE_STARTUP_TIMEOUT   ((uint16_t)0x0500) /*!< Time out for HSE start up */ //主要是在外部晶振时钟设置中使用。设置晶振启动稳定时间

PS1:
问:
GD32替代STM32需要修改这个宏定义:
#define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500)
替换为
#define HSE_STARTUP_TIMEOUT ((uint16_t)0xFFFF)
HSE_STARTUP_TIMEOUT  主要是在外部晶振时钟设置中使用,改成这么大的值以后,那么晶振启动时间容许的时间更久了。GD32为什么要改值?
答:
物理起振时间基本上是一致的,只是 GD 认为读取更多的 CLK 进来会更可靠!
这个没有更多原因,就是 A 认为 5个可靠,B 认为 10 个可靠。没什么影响,就是个数。(注:曾经有人用ST出现过这种问题,HSE还没有稳定工作就超时了,改成0xFFFF后板子正常工作。)

PS2:
HSE (High Speed External Clock signal) 高速外部时钟信号
HSI(High Speed Internal Clock signal)
LSE(Low..)、LSI(Low..) (PLL锁相环是启动文件里用到的,不属于时钟)
HSE时钟是 STM32、STM8等系列MCU中的高速外部晶体振荡器,可由下面两个时钟源产生:
1. HSE外部晶体/陶瓷谐振器
2. HSE外部有源时钟
为了最大限度减小输出失真和减小启动的稳定时间,谐振器和负载电容应尽可能得靠近振荡器引脚。负载电容值应根据所选的振荡器进行调整。

#define HSI_VALUE    ((uint32_t)8000000) /*!< Value of the Internal oscillator in Hz*/ //

stm32f10x.h中,默认外部晶振频率8000000Hz,如果你的系统的外部晶振不是8M,改成你的晶振频率就好了(如果不改,速度计算就会错,导致串口通讯时出问题)。

图方便就把整个项目的HSI_Value都改成了25000000。

**********************************************************************
stm32f10x 标准外设库版本号
**********************************************************************

#define __STM32F10X_STDPERIPH_VERSION_MAIN   (0x03) /*!< [31:24] main version */                                  
#define __STM32F10X_STDPERIPH_VERSION_SUB1   (0x05) /*!< [23:16] sub1 version */
#define __STM32F10X_STDPERIPH_VERSION_SUB2   (0x00) /*!< [15:8]  sub2 version */
#define __STM32F10X_STDPERIPH_VERSION_RC     (0x00) /*!< [7:0]  release candidate */ 
#define __STM32F10X_STDPERIPH_VERSION       ( (__STM32F10X_STDPERIPH_VERSION_MAIN << 24)\
                                             |(__STM32F10X_STDPERIPH_VERSION_SUB1 << 16)\
                                             |(__STM32F10X_STDPERIPH_VERSION_SUB2 << 8)\
                                             |(__STM32F10X_STDPERIPH_VERSION_RC))

**********************************************************************
brief Configuration of the Cortex-M3 Processor and Core Peripherals       Cortex-M3处理器简单配置和核心的外围设备
**********************************************************************

#ifdef STM32F10X_XL
 #define __MPU_PRESENT             1 /*!< STM32 XL-density devices provide an MPU */
#else
 #define __MPU_PRESENT             0 /*!< Other STM32 devices does not provide an MPU */
#endif /* STM32F10X_XL */
#define __NVIC_PRIO_BITS          4 /*!< STM32 uses 4 Bits for the Priority Levels    */

#define __Vendor_SysTickConfig    0 /*!< Set to 1 if different SysTick Config is used */

其他部分参见本人文章:

stm32f10x_map.h(3.1以后不再使用)阅读记录 (对比老版的stm32f10x_map.h和3.5.0版stm32f10x.h)

抱歉!评论已关闭.