stm 32 F 1——ノートシリーズ——1.点灯プログラム(GPIO構成)(GPIO出力構成)

10171 ワード

自作のノート.
メイン関数main.c
#include "stm32f10x.h"
#include "bsp_led.h"

#define SOFT_DELAY Delay(0x0FFFFF);

void Delay(__IO u32 nCount); 

/**
  * @brief   
  * @param     
  * @retval  
  */
int main(void)
{	
	/* LED   */
	LED_GPIO_Config();	 

	while (1)
	{
		LED1_ON;			  //  
		SOFT_DELAY;
		LED1_OFF;		   //  

		LED2_ON;			 //  
		SOFT_DELAY;
		LED2_OFF;		   //  

	}
}

void Delay(__IO uint32_t nCount)	 // 
{
	for(; nCount != 0; nCount--);
}

led部分led.h
#ifndef __LED_H
#define	__LED_H


#include "stm32f10x.h"


/*  LED GPIO ,  LED  */
#define LED1_GPIO_PORT    	GPIOC		              /* GPIO  */
#define LED1_GPIO_CLK 	    RCC_APB2Periph_GPIOC		/* GPIO  */
#define LED1_GPIO_PIN			GPIO_Pin_2			        

#define LED2_GPIO_PORT    	GPIOC			              /* GPIO  */
#define LED2_GPIO_CLK 	    RCC_APB2Periph_GPIOC		/* GPIO  */
#define LED2_GPIO_PIN		GPIO_Pin_3			        



/** the macro definition to trigger the led on or off 
  * 1 - off
  *0 - on
  */
#define ON  0
#define OFF 1

/*  IO*/
#define LED1(a)	if (a)	\
					GPIO_SetBits(LED1_GPIO_PORT,LED1_GPIO_PIN);\
					else		\
					GPIO_ResetBits(LED1_GPIO_PORT,LED1_GPIO_PIN)

#define LED2(a)	if (a)	\
					GPIO_SetBits(LED2_GPIO_PORT,LED2_GPIO_PIN);\
					else		\
					GPIO_ResetBits(LED2_GPIO_PORT,LED2_GPIO_PIN)




/*  IO */
#define	digitalHi(p,i)		 {p->BSRR=i;}	 // 		
#define digitalLo(p,i)		 {p->BRR=i;}	 // 
#define digitalToggle(p,i) {p->ODR ^=i;} // 


/*  IO  */
#define LED1_TOGGLE		 digitalToggle(LED1_GPIO_PORT,LED1_GPIO_PIN)
#define LED1_OFF		   digitalHi(LED1_GPIO_PORT,LED1_GPIO_PIN)
#define LED1_ON			   digitalLo(LED1_GPIO_PORT,LED1_GPIO_PIN)

#define LED2_TOGGLE		 digitalToggle(LED2_GPIO_PORT,LED2_GPIO_PIN)
#define LED2_OFF		   digitalHi(LED2_GPIO_PORT,LED2_GPIO_PIN)
#define LED2_ON			   digitalLo(LED2_GPIO_PORT,LED2_GPIO_PIN)



void LED_GPIO_Config(void);

#endif /* __LED_H */


led.c


GPIO構成
#include "bsp_led.h"   

 /**
  * @brief   LED IO
  * @param   
  * @retval  
  */
void LED_GPIO_Config(void)
{		
		/* GPIO_InitTypeDef */
		GPIO_InitTypeDef GPIO_InitStructure;

		/* LED GPIO */
		RCC_APB2PeriphClockCmd( LED1_GPIO_CLK | LED2_GPIO_CLK , ENABLE);
		/* GPIO */
		GPIO_InitStructure.GPIO_Pin = LED1_GPIO_PIN;	

		/* */
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   

		/* 50MHz */   
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 

		/* , GPIO*/
		GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStructure);	
		
		/* GPIO */
		GPIO_InitStructure.GPIO_Pin = LED2_GPIO_PIN;

		/* , GPIO*/
		GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStructure);		

		/*  led 	*/
		GPIO_SetBits(LED1_GPIO_PORT, LED1_GPIO_PIN);
		
		/*  led 	*/
		GPIO_SetBits(LED2_GPIO_PORT, LED2_GPIO_PIN);
}
/*********************************************END OF FILE**********************/