13.09.2014, 11:34
|
|
Прописка
Регистрация: 29.06.2010
Сообщений: 104
Сказал спасибо: 14
Сказали Спасибо 9 раз(а) в 7 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Полагаю что от чтения! втот с помощью этой закладки!
|
|
|
|
14.09.2014, 16:23
|
|
Прохожий
Регистрация: 30.01.2012
Сообщений: 2
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Easyrider83
|
У меня время по USB синхронизируется. Так что проблема не большая, но на будущее хотелось бы решать эту проблему как-то правильнее.
И программно включить защиту от чтения я пока так и не смог.
|
Вот кусок рабочего кода из рабочего проекта
проверим закрыт ли флеш
Код:
|
if(FLASH-›OBR &FLASH_OBR_RDPRT)
{
// закрыт
}
else
{
// не закрыт, закрываем
FLASH_ReadProtection();
Debug("Enable read protect\r");
}
------------------------
void FLASH_ReadProtection(void )
{
flash_unlock();
while(!flash_ready())
{
}
FLASH-›OPTKEYR = FLASH_KEY1;
FLASH-›OPTKEYR = FLASH_KEY2;
while(!flash_ready())
{
}
//сотрем системный блок
FLASH-›CR |=FLASH_CR_OPTER ;
FLASH-›CR |= FLASH_CR_STRT ;
while(!flash_ready())
{
}
//запишем в системны й блок
FLASH-›CR &= ~FLASH_CR_OPTER;
FLASH-›CR |=FLASH_CR_OPTPG ;
OB-›RDP =((uint16_t)0x0) ; //запретим чтение флеша заменить на 0
while(!flash_ready())
{
}
FLASH-›CR &=~FLASH_CR_OPTPG ;
FLASH-›CR |=FLASH_CR_OPTPG ;
OB-› USER =6;//апаратный ватчдог включить
while(!flash_ready())
{
}
FLASH-›CR &=~FLASH_CR_OPTPG ;
FLASH-›CR |= FLASH_CR_LOCK; //lock flash
}
---------------------------
unsigned char flash_ready()
{
return(!(FLASH-›SR & FLASH_SR_BSY));
} |
|
|
|
|
24.09.2014, 18:36
|
|
Временная регистрация
Регистрация: 18.04.2011
Сообщений: 84
Сказал спасибо: 23
Сказали Спасибо 6 раз(а) в 4 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Здравствуйте!
Работаю с RTC контроллера stm32f103vg. Запустил все работает изменяет дату и тд.
Пробую использовать будильник. При попытки записать данные в регистры будильника ![Бьюсь об стену](images/smilies/icon_obstenu.gif) - глухо нечего не пишет (см. через отладчик). Может что то упустил подскажите пожалуйста. ![Бьюсь об стену](images/smilies/icon_obstenu.gif)
КОД:
PHP код:
|
rtc_value=RTC-›CNTH‹‹16|RTC-›CNTL;
rtc_value+=60;
while ((RTC-›CRL&RTC_CRL_RTOFF)!= RTC_CRL_RTOFF);
RTC-›CRL |= RTC_CRL_CNF;
RTC-›ALRH = rtc_value ›› 16;
RTC-›ALRL = rtc_value & 0x0000FFFF;
RTC-›CRH|=RTC_CRH_ALRIE;
RTC-›CRL &= ~RTC_CRL_CNF;
|
P.S. Работа с Backup domain разрешена.
P.P.S. использовать отдельно таймер не хочется при работающем РТС
|
|
|
|
24.09.2014, 19:01
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Вначале разблокировать запись нужно
|
|
|
|
24.09.2014, 19:04
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Да не, там старые грабли. Keil не показывает содержание регистров RTC в режиме отладки правильно. Какой-то косяк в дебаггере. Так что весьма вероятно, что будильник все таки сработает через ваши 60 секунд.
|
|
|
|
24.09.2014, 22:06
|
|
Частый гость
Регистрация: 24.03.2010
Адрес: Kiev
Сообщений: 14
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Изучаем STM32 Cortex M3
не хватает
//разрешить доступ к области резарвных данных
PWR-›CR |= PWR_CR_DBP;
|
|
|
|
25.09.2014, 03:32
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Да он же сказал, что backup domain разблокировал. Просто в коде не указал.
|
|
|
|
25.09.2014, 10:58
|
|
Временная регистрация
Регистрация: 18.04.2011
Сообщений: 84
Сказал спасибо: 23
Сказали Спасибо 6 раз(а) в 4 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Easyrider83
|
Да не, там старые грабли. Keil не показывает содержание регистров RTC в режиме отладки правильно. Какой-то косяк в дебаггере. Так что весьма вероятно, что будильник все таки сработает через ваши 60 секунд.
|
Да действительно работает. Просто использовал не тот вектор прерывания (RTCAlarm_IRQn). ![Бьюсь об стену](images/smilies/icon_obstenu.gif) Переставил на RTC глобальное и все работает. (Почему то в хедере сразу его не увидел ![Озадачен](images/smilies/icon_confused.gif) )
Сразу вопрос на засыпку для развития, а в каких случаях используется RTCAlarm_IRQn?
|
|
|
|
28.09.2014, 14:07
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Uvavan Это вектор для выхода из Stop/и подобных режимов по прерыванию от аларма RTC
(на моем 103-м висит на EXTI line17)
|
|
|
|
20.10.2014, 19:11
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Добрый день. Имеется контроллер stm32f051c8t6, на ножке РА6 хочу получить шим для этого настраиваю таймер 16:
Код:
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM16 , ENABLE);
/* Time Base configuration */
TIM_TimeBaseStructure.TIM_Prescaler = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_Period = 13000-1;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM16, &TIM_TimeBaseStructure);
/* Channel 1 Configuration in PWM mode */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;
TIM_OCInitStructure.TIM_Pulse = 6500;
TIM_OC1Init(TIM16, &TIM_OCInitStructure);
TIM_Cmd(TIM16, ENABLE);
TIM_CtrlPWMOutputs(TIM16, ENABLE); |
настройка порта:
Код:
|
RCC_AHBPeriphClockCmd( RCC_AHBPeriph_GPIOA, ENABLE);
/* GPIOA Configuration: Channel 1 as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_2); |
Но на выходе получаю высокий уровень. Уже пробовал и на PB8 и третий таймер результат один и тот же. Сам таймер (что 3, что 16) настраивается и работает, смотрел в дебагере. Подскажите, что не правильно делаю?
Последний раз редактировалось swat24; 20.10.2014 в 19:13.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:16.
|
|