1 | // ----------------------------------------------------------------------------
|
2 | #include <stdio.h>
|
3 | #include <stdlib.h>
|
4 | #include "diag/Trace.h"
|
5 |
|
6 | #include "stm32f10x.h"
|
7 |
|
8 | // ----- main() ---------------------------------------------------------------
|
9 |
|
10 | // Sample pragmas to cope with warnings. Please note the related line at
|
11 | // the end of this function, used to pop the compiler diagnostics status.
|
12 | #pragma GCC diagnostic push
|
13 | #pragma GCC diagnostic ignored "-Wunused-parameter"
|
14 | #pragma GCC diagnostic ignored "-Wmissing-declarations"
|
15 | #pragma GCC diagnostic ignored "-Wreturn-type"
|
16 |
|
17 | int main(int argc, char* argv[])
|
18 | {
|
19 | GPIO_InitTypeDef GPIO_InitStructure;
|
20 | TIM_TimeBaseInitTypeDef TIM_TimeBase_InitStructure;
|
21 | NVIC_InitTypeDef NVIC_InitStructure;
|
22 |
|
23 | SystemInit();
|
24 |
|
25 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
|
26 | RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
|
27 |
|
28 | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
|
29 | GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
|
30 | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
31 | GPIO_Init(GPIOE, &GPIO_InitStructure);
|
32 |
|
33 | TIM_TimeBase_InitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
|
34 | TIM_TimeBase_InitStructure.TIM_CounterMode = TIM_CounterMode_Up;
|
35 | TIM_TimeBase_InitStructure.TIM_Period = 1999;
|
36 | TIM_TimeBase_InitStructure.TIM_Prescaler = 17999;
|
37 | TIM_TimeBaseInit(TIM2, &TIM_TimeBase_InitStructure);
|
38 | TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
|
39 |
|
40 | NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
|
41 | NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
42 | NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
|
43 | NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
|
44 | NVIC_Init(&NVIC_InitStructure);
|
45 |
|
46 | TIM_Cmd(TIM2, ENABLE);
|
47 |
|
48 | // Short loop.
|
49 | while (1)
|
50 | {
|
51 |
|
52 | }
|
53 | return 0;
|
54 | }
|
55 |
|
56 | extern "C" void TIM2_IRQHandler(void)
|
57 | {
|
58 | TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
|
59 | if (GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_5))
|
60 | {
|
61 | GPIO_WriteBit(GPIOE, GPIO_Pin_5, Bit_RESET);
|
62 | }
|
63 | else
|
64 | {
|
65 | GPIO_WriteBit(GPIOE, GPIO_Pin_5, Bit_SET);
|
66 | }
|
67 | }
|
68 |
|
69 | #pragma GCC diagnostic pop
|
70 |
|
71 | // ----------------------------------------------------------------------------
|