STM32學習篇-跑馬燈


一、工作目錄
USER:組USER中一般有main.c、stm32f10x_it.c、system_stm32f10x.c,主要用來編寫main函數,存放的主要是用戶代碼,stm32f10x_it.c中主要用來定義部分中斷服務函數,
System_stm32f10x.c主要定義SystemInit等時鍾初始化函數

HARDWARE:下面存放的是每個實驗的外設驅動代碼,他的實現是通過調用FWLib,下面的固件庫文件實現的,比如led.c 里面調用stm32f10x_gpio.c 里面的函數對led 進行初始化,
這里面的函數是講解的重點。后面的實驗中可以看到會引入多個源文件。

SYSTEM:組SYSTEM 是ALIENTEK 提供的共用代碼,包含Systick 延時函數,IO 口位帶操作以及串口相關函數
④CORE:組CORE 下面存放的是固件庫必須的核心文件和啟動文件。這里面的文件用戶不需要修改

FWLib:組FWLib 下面存放的是ST 官方提供的外設驅動固件庫文件,這些文件大家可以根據工程需要來添加和刪除。每個stm32f10x_ppp.c 源文件對應一個stm32f10x_ppp.h 頭文件。

README:README 分組主要就是添加了README.TXT 說明文件,對實驗操作進行相關說明。
組之間的層次結構:

二、STM32的IO口
8種模式:
1、輸入浮空
2、輸入上拉
3、輸入下拉
4、模擬輸入
5、開漏輸出
6、推挽輸出
7、推挽式復用功能
8、開漏復用功能

燒錄程序的配置(使用ST-Link)

代碼思路:先定義led燈的初始化函數,初始化IO口,設置IO口的輸出輸入模式,在main函數中調用初始化和延時函數,並設置燈的狀態(1:亮,0:滅)
HARDWARE:
led.c:

#include "led.h"

void LED_Init(void)
{
	GPIO_InitTypeDef  GPIO_InitStructure;

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE, ENABLE);	 //使能PD,PE端口時鍾

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;				 //LED0-->PB.6 端口配置
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽輸出,控制高低電平
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度為50MHz
	GPIO_Init(GPIOD, &GPIO_InitStructure);					 //根據設定參數初始化GPIOD.6
	GPIO_SetBits(GPIOD,GPIO_Pin_6);						 //PB.6 輸出高

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;	    		 //LED1-->PE.6 端口配置,推挽輸出
	GPIO_Init(GPIOE, &GPIO_InitStructure);	  				 //推挽輸出,io速度為50MHz
	GPIO_SetBits(GPIOE,GPIO_Pin_6); 						 //PE.6 輸出高
}

led.h:

#ifndef __LED_H
#define	__LED_H
#include "sys.h"



// LED端口定義
#define LED0 PDout(6)// PD6
#define LED1 PEout(6)// PE6	

void LED_Init(void);

#endif

main.c:

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"

int main(void)
{
	delay_init();		//延時函數初始化
	LED_Init();	//初始化與LED連接的硬件接口
	while(1)
	{
		LED0 = 0;
		LED1 = 1;
		delay_ms(1000);		//延時1s
		LED0 = 1;
		LED1 = 0;
		delay_ms(1000);		//延時1s
	}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM