STM32标准外设库是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API,通过使用固件函数库,无需深入掌握底层硬件细节,开发者就可以轻松应用每一个外设。
因此,使用固态函数库可以大大减少开发者开发使用片内外设的时间,进而降低开发成本。每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。同时,STM32官方还给出了大量的示例代码以供学习。
下面就用STM32F10x标准固件库函数,实现跑马灯实验程序,完整代码如下:
#include "stm32f10x.h" // 粗略延时函数 static void delay(uint32_t n) { for(uint32_t i=0; i<n; i++) { for(uint32_t j=0; j<1024 * 1024; j++) { __asm("nop"); } } } int main(void) { GPIO_InitTypeDef GPIO_InitStructure; uint16_t GPIO_Pin[8] = {GPIO_Pin_0, GPIO_Pin_1, GPIO_Pin_2, GPIO_Pin_3, \ GPIO_Pin_4, GPIO_Pin_5, GPIO_Pin_6, GPIO_Pin_7}; // 使能GPIOB端口时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // 配置IO口为输出模式 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); // 设置IO口为高电平,关闭LED灯 GPIO_SetBits(GPIOB, GPIO_Pin_All); while(1) { for(uint8_t i=0; i<8; i++) { // 设置IO口为低电平,打开LED灯 GPIO_ResetBits(GPIOB, GPIO_Pin[i]); delay(1); // 设置IO口为高电平,关闭LED灯 GPIO_SetBits(GPIOB, GPIO_Pin[i]); delay(1); } } }