STM32微控制器之跑马灯实验程序(标准固件库版)

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);
		}
	}
}

Leave a Reply

Your email address will not be published. Required fields are marked *