CMSIS2000
0.0.7
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
led.c
Go to the documentation of this file.
1
/**
2
* Copyright (c) 2012, Roy van Dam <roy@vandam-innovations.com>
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions are met:
7
*
8
* 1. Redistributions of source code must retain the above copyright notice, this
9
* list of conditions and the following disclaimer.
10
* 2. Redistributions in binary form must reproduce the above copyright notice,
11
* this list of conditions and the following disclaimer in the documentation
12
* and/or other materials provided with the distribution.
13
*
14
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
15
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
18
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
23
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24
*/
25
26
#include "
led.h
"
27
28
void
assert_param
(
bool
value
) {
29
if
(value ==
false
) {
30
// XXX: Debug on failed assertion.
31
}
32
}
33
34
volatile
unsigned
long
system_tick_count
= 0;
35
36
void
SysTick_Handler
(
void
) {
37
system_tick_count
++;
38
}
39
40
void
SysTick_Delay
(
unsigned
long
ms) {
41
unsigned
long
target_tick_count =
system_tick_count
+ ms;
42
43
// Handle timer overflow
44
if
(target_tick_count <
system_tick_count
)
45
while
(
system_tick_count
> target_tick_count);
46
47
// Wait for time to pass
48
while
(
system_tick_count
< target_tick_count);
49
}
50
51
void
Led_Init
(
LedId
led) {
52
GPIO_InitTypeDef GPIO_Context;
53
54
RCC_APB2PeriphClockCmd(
led_context
[led].clock, ENABLE);
55
56
GPIO_Context.GPIO_Pin =
led_context
[led].
pin
;
57
GPIO_Context.GPIO_Mode = GPIO_Mode_Out_PP;
58
GPIO_Context.GPIO_Speed = GPIO_Speed_50MHz;
59
60
GPIO_Init(
led_context
[led].port, &GPIO_Context);
61
}
62
63
void
Led_Enable
(
LedId
led) {
64
led_context
[led].
port
->BSRR =
led_context
[led].
pin
;
65
}
66
void
Led_Disable
(
LedId
led) {
67
led_context
[led].
port
->BRR =
led_context
[led].
pin
;
68
}
69
70
int
main
(
void
) {
71
Led_Init
(
LED0
);
72
Led_Disable
(
LED0
);
73
74
Led_Init
(
LED1
);
75
Led_Disable
(
LED1
);
76
77
while
(1) {
78
Led_Enable
(
LED1
);
79
SysTick_Delay
(500);
80
Led_Disable
(
LED1
);
81
SysTick_Delay
(500);
82
}
83
}
Device
ST
STM32F10x
Examples
LED
led.c
Generated on Wed Mar 6 2013 01:06:11 for CMSIS2000 by
1.8.1.2