Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2018-июн-23 19:01

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: 1896ВЕ92 Keil видимость переменных
СообщениеДобавлено: 2018-май-18 16:13 
Не в сети

Зарегистрирован: 2018-мар-20 09:55
Сообщения: 7
Настраиваю генератор ШИМ.
В функции PortsInit() написал инициализацию порта,функция заканчивается следующим:
Код:
/* Настройка счетчика TIMER3 */
TIMER_CntInitTypeDef sTIM_CntInit;
sTIM_CntInit.TIMER_Prescaler = 0x0; // предусилитель
sTIM_CntInit.TIMER_Period = 625;// период таймера
sTIM_CntInit.TIMER_CounterMode = TIMER_CntMode_ClkFixedDir; //режим счета
sTIM_CntInit.TIMER_CounterDirection = TIMER_CntDir_Up;//направление счета
sTIM_CntInit.TIMER_EventSource = TIMER_EvSrc_None; // источник событий для таймера
sTIM_CntInit.TIMER_FilterSampling = TIMER_FDTS_TIMER_CLK_div_1;
// указывает фильтр событий
sTIM_CntInit.TIMER_ARR_UpdateMode =
TIMER_ARR_Update_Immediately; // режим сброса счетчика
sTIM_CntInit.TIMER_ETR_FilterConf =TIMER_Filter_1FF_at_TIMER_CLK;// задает параметры выхода ETR
sTIM_CntInit.TIMER_ETR_Prescaler = TIMER_ETR_Prescaler_None;   
//задает предусилитель выхода ETR
sTIM_CntInit.TIMER_ETR_Polarity = TIMER_ETRPolarity_NonInverted;
// задает полярность выхода ETR
sTIM_CntInit.TIMER_BRK_Polarity = TIMER_BRKPolarity_NonInverted;
// задает полярность выхода BRK
TIMER_CntInit (MDR_TIMER3,&sTIM_CntInit);

в функции main пишется 2 следующие строки

TIMER_CntInitTypeDef sTIM_CntInit;
sTIM_CntInit.TIMER_Prescaler = 0x0; //в main() sTIM_CntInit более не встречается

компилятор естественно пишет warning что sTIM_CntInit инициализирована но не используется. Далее окончание ШИМ инициализации, в main изменяются структуры типа TIMER_ChnInitTypeDef и TIMER_ChnOutInitTypeDef. Стоит закомментировать строку sTIM_CntInit.TIMER_Prescaler = 0x0; как ШИМ уже не генерируется. При попытке вынести TIMER_ChnInitTypeDef и TIMER_ChnOutInitTypeDef структуры в функции PortsInit() похожее тоже надо сделать в main().
Почему так компилируется, может сделать структуры глобальными?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1896ВЕ92 Keil видимость переменных
СообщениеДобавлено: 2018-май-18 16:32 
Не в сети

Зарегистрирован: 2014-июн-25 09:29
Сообщения: 68
Поскольку переменная sTIM_CntInit описана внутри функции, она является автоматической, т.е. размещается в стеке. Автоматические переменные, в отличие от глобальных, не инициализируются сами собой. Под них просто выделяется место в стеке, заполненное всяким мусором. Поэтому поля вашей структуры нужно инициализировать руками.
Удобно также перед использованием этой структуры применить функцию TIMER_StructInit (поскольку сейчас под рукой нет Keil-a, могу немного ошибиться в названии функции).
Делать в данном случае структуру глобальной не обязательно - пустая трата памяти.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB