Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 08.11.2015
Сообщений: 9
1

Stm32f4discovery бег светодиода по кругу

20.03.2016, 16:39. Показов 1447. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Светодиод бежит по кругу только с заданным максимальным значением, как изменять задержку нажатием кнопки? меняя получается скорость мигания по кругу. полный код прикреплен.
C
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
/**
  ******************************************************************************
  * @file    main.c
  * @author  MCD Application Team
  * @version V1.0.0
  * @date    19-September-2011
  * @brief   Main program body
  ******************************************************************************
  * @attention
  *
  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  *
  * <h2><center>&copy; COPYRIGHT 2011 STMicroelectronics</center></h2>
  ******************************************************************************
  */
 
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "stm32f4xx.h"
//#include "stm324xg_eval.h"
 
__IO uint32_t TimingDelay;
__IO uint8_t UserButtonPressed = 0x00;
uint8_t boolvinkl = 0;
uint16_t i = 0;
uint8_t j = 0;
 
 
/* Private function prototypes -----------------------------------------------*/
static void Demo_Exec(void);
//uint8_t togglecounter = 0x00;
//uint8_t flag = 0x01;
//uint8_t p = 0;
 
 
 
/* Private functions ---------------------------------------------------------*/
 
/**
  * @brief  Main program.
  * @param  None
  * @retval None
  */
int main(void)
{
  RCC_ClocksTypeDef RCC_Clocks;
 
  /* Initialize LEDs and User_Button on STM32F4-Discovery --------------------*/
  STM_EVAL_PBInit(BUTTON_USER, BUTTON_MODE_EXTI);
 
  STM_EVAL_LEDInit(LED3);
  STM_EVAL_LEDInit(LED4);
  STM_EVAL_LEDInit(LED5);
  STM_EVAL_LEDInit(LED6);
 
  /* SysTick end of count event each 10ms */
  RCC_GetClocksFreq(&RCC_Clocks);
  SysTick_Config(RCC_Clocks.HCLK_Frequency / 100); //прерывание 0,1с
 
  Demo_Exec();
}
 
/**
  * @brief  Execute the demo application.
  * @param  None
  * @retval None
  */
void Delay(__IO uint32_t nTime)
{
  TimingDelay = nTime;
 
  while(TimingDelay != 0);
}
void TimingDelay_Decrement(void) // вызывается прерывание по системного таймеру
                //проверяет если таймер Delay не равно 0. уменьшает SysTick
{
    i++;
    if(boolvinkl==0 && STM_EVAL_PBGetState(BUTTON_USER) == Bit_SET) // проверяем если boolvinkl==0 подымаем флаг. если boolvinkl = 1. меняется значение массива temp[j]
                                    // и обнуляем.
                                    // проверяем если temp[j]  дошло до потолка j=0.
    {
        boolvinkl = 1;
        j++;
        i=0;
 
    if(j==4) // градации
        j = 0;
    }
 
    if (TimingDelay != 0x00)
    {
        TimingDelay--;
    }
}
 
static void Demo_Exec(void)
{
 
    uint8_t max = 100; // максимальное значение прерывания
    uint8_t temp[] = {0, 25, 50, 75}; // градации, отнимаем от максимального значения и получаем меньше задержку
    //uint8_t togglecounter == 0;
 
    while(1)
      {
        for(uint32_t i = 0; i != max; i += temp[j])
        {
        if(temp[j] !=max) 
        {
            STM_EVAL_LEDOn (LED3);
 
            STM_EVAL_LEDOff(LED5);
            STM_EVAL_LEDOff(LED6);
            STM_EVAL_LEDOff(LED4);
 
            Delay(max);
        }
        if(temp[j] !=max)
         {
             STM_EVAL_LEDOff(LED3);
             STM_EVAL_LEDOn (LED5);
 
             STM_EVAL_LEDOff(LED6);
             STM_EVAL_LEDOff(LED4);
             Delay(max);
         }
        if(temp[j] !=max)
         {
             STM_EVAL_LEDOff(LED3);
             STM_EVAL_LEDOff (LED5);
             STM_EVAL_LEDOn (LED6);
 
             STM_EVAL_LEDOff(LED4);
             Delay(max);
 
         }
        if(temp[j] !=max)
         {
             STM_EVAL_LEDOff (LED3);
             STM_EVAL_LEDOff(LED5);
             STM_EVAL_LEDOff(LED6);
             STM_EVAL_LEDOn (LED4);
             Delay(max);
         }
        }
      }
 
 
/**
  * @brief  Inserts a delay time.
  * @param  nTime: specifies the delay time length, in 10 ms.
  * @retval None
  */
 
 
/**
  * @brief  Decrements the TimingDelay variable.
  * @param  None
  * @retval None
  */
 
 
 
/**
  * @}
  */
 
 
/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/
Вложения
Тип файла: txt Новый текстовый документ.txt (1.1 Кб, 5 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.03.2016, 16:39
Ответы с готовыми решениями:

N серых и M белых мышей сидят по кругу. Кошка ходит по кругу по часовой стрелке и съедает каждую S -тую мышку
N серых и M белых мышей сидят по кругу. Кошка ходит по кругу по часовой стрелке и съедает каждую S...

В кругу стоят N человек пронумерованных от 1 до N. При ведении счета по кругу вычеркивается каждый второй человек
В кругу стоят N человек пронумерованных от 1 до N. При ведении счета по кругу вычеркивается каждый...

В кругу стоят N человек, от 1 до N. При ведении счета по кругу вычеркивается каждый второй человек
В кругу стоят N человек, пронумерованных от 1 до N. При ведении счета по кругу вычеркивается каждый...

По кругу стоят n человек. Ведущий посчитал m человек по кругу, начиная с первого
По кругу стоят n человек. Ведущий посчитал m человек по кругу, начиная с первого. При этом каждый...

1
37 / 31 / 5
Регистрация: 30.04.2014
Сообщений: 962
04.04.2016, 12:02 2
Надо тогда две переменные ввести. Одна для времени свечения светодиода. Вторая для времени не свечения светодиода. И менять первую.
0
04.04.2016, 12:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2016, 12:02
Помогаю со студенческими работами здесь

Бег на 10 км
в первый день спортсмен пробежал 10км,каждый следующий день он увелчивал норму пробежки на 0,5км...

Бег в качалке
Что бы накачать мышцы надо ли бегать? Будет ли как-то бег способствовать быстрому росту мышц?

Бег по воде
Здравствуйте, помогите пожалуйста решить следующию задачу: С какой скорость должен бежать по воде...

Бег - Pascal ABC
Бег. Пользователь указывает количество км за каждый день в течение некоторого периода времени....

Анимация: бег с барьерами
В рисованных мультфильмах иллюзия движения создается последовательной сменой кадров, каждый из...

бег лошадей по прямой
скажите как сделать чтоб 4 лошади( Image) бежали по прямой и первая которая добежит до финиша...

Магический квадрат и бег с препятствиями.
Задали вот такую интересную тему: Сделать программу, которая проверяет, для заданного квадрата,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru