STM32 V5 source code
guowenxue
2018-05-16 a22d9c106276bb1819e583012d7ea41b6529b318
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/****************************************************************************
*   Copyright: (C)2018 Î人ÁèÔÆÎïÍøÖÇ¿ÆÊµÑéÊÒ www.iot-yun.com
*      Author: GuoWenxue<guowenxue@gmail.com> QQ: 281143292
* Description: ·Ü¶·STM32v5¿ª·¢°å LED¿ØÖÆ´úÂë
*   ChangeLog:
*        °æ±¾ºÅ     ÈÕÆÚ       ×÷Õß      ËµÃ÷
*        V1.0.0  2018.05.10  GuoWenxue   ·¢²¼¸Ã°æ±¾
****************************************************************************/
 
#include "stm32f10x.h"
 
 
void delay(uint32_t count)
{
   for(; count != 0; count--) 
       ;
   
   return ;
}
 
//#define MAIN_USE_API
 
#ifndef MAIN_USE_API
 
void led_gpio_init(void); /*º¯ÊýÉùÃ÷*/
 
int main(void)
{
    led_gpio_init();
    
    while(1)
    {
        GPIO_SetBits(GPIOB, GPIO_Pin_5);   /* µãÁÁLED1 */
        delay(0x3FFFFF);        
        GPIO_ResetBits(GPIOB, GPIO_Pin_5); /* ÃðµôLED1 */
        delay(0x3FFFFF);
 
        GPIO_SetBits(GPIOD, GPIO_Pin_6);   /* µãÁÁLED2 */
        delay(0x3FFFFF);        
        GPIO_ResetBits(GPIOD, GPIO_Pin_6); /* ÃðµôLED2 */
        delay(0x3FFFFF);
 
        GPIO_SetBits(GPIOD, GPIO_Pin_3);   /* µãÁÁLED3 */
        delay(0x3FFFFF);
        GPIO_ResetBits(GPIOD, GPIO_Pin_3); /* ÃðµôLED3 */    
        delay(0x3FFFFF);
    }
}
 
/* STM32v5 Èý¸öLED·Ö±ðÁ¬½Ó GPIO¿ÚµÄ PB5(LED1)¡¢PD6(LED2)¡¢PD3(LED3) */
void led_gpio_init(void)
{
    GPIO_InitTypeDef   GPIO_InitStructure;
    
    /* Ê¹ÄÜGPIOµÄPBºÍPD ×éµÄʱÖÓ£¬ÒòΪÈý¸öLED ·Ö±ðÁ¬ÔÚPBºÍPD ×éÉÏ */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOD , ENABLE);    
    
    /*+-----------------------------------+
     *|     ÉèÖÃPB5(¼´LED1)GPIOģʽ       |
     *+-----------------------------------+*/
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;    
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  /* ÍÆÍìÊä³öģʽ */
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /* ·­×ªËÙ¶ÈΪ50MHz */
    GPIO_Init(GPIOB, &GPIO_InitStructure);
 
    /*+-----------------------------------+
     *|     ÉèÖÃPD6(¼´LED2)GPIOģʽ       |
     *+-----------------------------------+*/    
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOD, &GPIO_InitStructure);
 
    /*+-----------------------------------+
     *|     ÉèÖÃPD3(¼´LED3)GPIOģʽ       |
     *+-----------------------------------+*/        
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOD, &GPIO_InitStructure);    
 
    return ;
}
 
#else
 
#include "stm32v5_led.h"
int main(void)
{
    init_led_gpio();
    
    while(1)
    {
        turn_led(LED1,ON);
        delay(0x3FFFFF);
        turn_led(LED1,OFF);
        delay(0x3FFFFF);
 
        turn_led(LED2,ON);
        delay(0x3FFFFF);
        turn_led(LED2,OFF);
        delay(0x3FFFFF);
 
        turn_led(LED2,ON);
        delay(0x3FFFFF);
        turn_led(LED2,OFF);
        delay(0x3FFFFF);        
    }
}
#endif