15 /* #include \ 16
17 #include \ 18
19 /* #include \ 20
21 /* #include \ 22
23 /* #include \ 24
25 #include \ 26
27 /* #include \ 28
29 /* #include \ 30
31 /* #include \ 32
33 #include \ 34
35 /* #include \ 36
37 /* #include \ 38
39 /* #include \ 40
41 /* #include \ 42
43 /* #include \ 44
45 /* #include \ 46
47 #include \ /* High level functions for NVIC and SysTick (add-on to CMSIS functions) */
上面一段程序来自于例程中的AD采集程序,程序使用了AD和DMA,因此去掉相应的注释,同时几乎所有的应用都需要使用复位与时钟以及通用I/O,因此这两项是必须的,
而多数程序同样要使用NVIC中断IRQ设置和SysTick时钟源设置,那么 “”这一项也是必须的。
上面已经针对具体的产品信号和程序功能进行了针对性的配置,接下来需要配置系统所使用的时钟,系统时钟在“”同样通过注释的方式来配置,程序如下:
#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)
/* #define SYSCLK_FREQ_HSE HSE_VALUE */
#define SYSCLK_FREQ_24MHz
#else
/* #define SYSCLK_FREQ_HSE HSE_VALUE */
/* #define SYSCLK_FREQ_24MHz */
/* #define SYSCLK_FREQ_36MHz */
/* #define SYSCLK_FREQ_48MHz */
/* #define SYSCLK_FREQ_56MHz */
#define SYSCLK_FREQ_72MHz
#endif
如果这儿没有明确的定义那么HSI时钟将会作为系统时钟。
至此,已经配置了系统的主要外部参数,这些参数主要是通过更改相关的宏定义来实现的,有些开发环境,例如Keil支持在软件设置中加入全局宏定义,因此像芯片系列定义,是否使用固件库定义等也可以通过软件添加来实现。
完成了主要参数配置以后就可以进行程序的开发了,标准外设库开发就可以使用标准外设库中提供的方便的API函数进行相应的功能设计了。在小节中已经介绍了基于标准外设库开发的优势,配置完成后,程序中仍然可以直接更改相应寄存器的配置,通过对寄存器的操作可以提高程序的效率,因此可以使用标准外设库和寄存器操作两种相结合的方式。
STM32固件库详解



