【STM32學習】(3)流水燈的實現

學習單片機都要學習流水燈,因爲流水燈比較簡單,易於實現,效果也比較好呈現。

這裏我用的單片機型號爲STM32F103VET

8個LED燈接在了PA口的低八位。

代碼實現如下:

: 對於新手來說,暫時先不要分文件寫代碼,我們將功能都寫在了main函數中,便於大家理解,後期要將程序模塊化)

/*

作者:XiaoCaiDaYong
時間:2019.9.26
功能:流水燈
接線:PA0-PA7接在LED1-LED8上

實現步驟:
	1.開啓GPIOA時鐘
	2.設置GPIOA指定口的工作模式(推輓輸出,速度爲50MHz)
	3.數據的輸出

*/
#include "stm32f10x.h"                  // Device header

unsigned char led[]={0X80,0X40,0X20,0X10,0X08,0X04,0X02,0X01};
void delay(void);    //    函數的聲明
int main(void)
{
	int n;
	unsigned char temp = 0X01;
	RCC_DeInit();
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);	//	開啓時鐘
	GPIO_InitTypeDef GPIO_InitStruct;	
	GPIO_DeInit(GPIOA);		//	將外設GPIOA 寄存器重設置爲缺省值
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_All;	//  選中所有管腳,其實只用了低八位管腳
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;	//	推輓輸出
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStruct);
	while(1)
	{
		temp = 0X01;
		for(n=0;n<8;n++)
		{
			GPIOA->ODR = temp;    //    寄存器實現,也可以用 GPIO_Write()函數實現
			temp = temp<<1;
			delay();
		}
	}
}

void delay(void)
{
	int i,j;
	for(i=0;i<400;i++)
	{
		for(j=0;j<400;j++);
	}
}

效果如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章