реклама на сайте
подробности

 
 
7 страниц V  « < 5 6 7  
Reply to this topicStart new topic
> Новый STM32F4
glags
сообщение Nov 19 2013, 22:54
Сообщение #91


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 9-05-13
Из: Львов, Украина
Пользователь №: 76 782



Цитата(Genadi Zawidowski @ Nov 19 2013, 22:39) *
Что было ДО, значение имеет.
Замените

на

И не будет иметь значения.


А вот про это

Я скажу - "добро пожаловать в клуб" (хотя Вы и так уже в нём, судя по коду) тех, кто не читает документацию до конца.
hint: не все биты в регистре MAPR доступны для чтения.
У меня делается вообще вот такой функцией в F1X (напоролся в 107-м):
Код
    /* установка битов в регистре AFIO_MAPR. Поддерживается режим переключения JTAG */
    void cpu_stm32f1xx_setmapr(
        unsigned long bits
        )
    {
        RCC->APB2ENR |=  RCC_APB2ENR_AFIOEN;     //включить тактирование альтернативных функций
        AFIO->MAPR = (AFIO->MAPR & ~ AFIO_MAPR_SWJ_CFG) | AFIO_MAPR_SWJ_CFG_JTAGDISABLE | bits;
    }


Огромное преогромное спасибо, я |= не заметил. Привык выставлять биты в регистрах сохраняя их значение и не обратил внимание. Всё заработало! А по поводу STM32F1, я с ним не знаком и когда искал инфу на свой на каком-то из форумов нашёл этот код и принял его за истину, так как ребята отзывались что у них всё заработало, по этому и привёл здесь. Прошу прощения за ошибку, каюсь. laughing.gif
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Nov 19 2013, 23:00
Сообщение #92


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Да чего каяться... сам наткнулся. используя чужой код можно и простые проблемы получить (вроде USART TXD и TXD - оба на ввод, но процессор игнорирует - не помню для какого процессора на такое наткнулся). И посложнее - вроде залипухи с не отключившимся jtag, что проявилось только на F107, нормально работая на 101, 103, 105...
Go to the top of the page
 
+Quote Post
glags
сообщение Nov 20 2013, 08:10
Сообщение #93


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 9-05-13
Из: Львов, Украина
Пользователь №: 76 782



Геннадий у меня к Вам как к знатоку ещё один вопросик по STM32F4.
У меня не работает запись в бэкап регистры RTC. Делаю я это следующим образом:

RTC->WPR = 0xCA; //Разблокировка записи
RTC->WPR = 0x53;
RTC->BKP0R=date; //Запись в 0 регистр
RTC->WPR = 0xFF; //Блокировка записи

Читаю соответственно: data=RTC->BKP0R;
без разблокировки записи.

RTC работает от кварца, то есть от LSЕ. Часы завелись и работают. Что я делаю не так.
PS: если надо, то код инициализации приведу.

Сообщение отредактировал glags - Nov 20 2013, 08:25
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Nov 20 2013, 10:32
Сообщение #94


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата
У меня не работает запись в бэкап регистры RTC

К сожалению, не смогу ничего подсказать...
Go to the top of the page
 
+Quote Post
adnega
сообщение Nov 20 2013, 12:49
Сообщение #95


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(glags @ Nov 20 2013, 12:10) *
У меня не работает запись в бэкап регистры RTC. Делаю я это следующим образом:

В RCC->APB1ENR.PWR единичка?
В PWR->CR.DPB единичка?
Go to the top of the page
 
+Quote Post
glags
сообщение Nov 20 2013, 22:21
Сообщение #96


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 9-05-13
Из: Львов, Украина
Пользователь №: 76 782



Цитата(adnega @ Nov 20 2013, 15:49) *
В RCC->APB1ENR.PWR единичка?
В PWR->CR.DPB единичка?

CODE
// Инициализация модуля
void rtc_Init(void)
{
// Если часы запущены, делать тут нечего.
if(RTC->ISR & RTC_ISR_INITS) return;
// Включим тактирование PWR
RCC->APB1ENR |= RCC_APB1ENR_PWREN;
// Разрешим доступ к управляющим регистрам энергонезависимого домена
PWR->CR |= PWR_CR_DBP;
// Сбросим состояние энергонезависимого домена
RCC->BDCR |= RCC_BDCR_BDRST;
RCC->BDCR &= ~RCC_BDCR_BDRST;
// Выберем его как источник тактирования RTC:
RCC->BDCR &= ~RCC_BDCR_RTCSEL; // сбросим
RCC->BDCR |= RCC_BDCR_RTCSEL_0 | RCC_BDCR_LSEON;
while (!(RCC->BDCR & RCC_BDCR_LSERDY)){} // Ждём, когда заведётся LSE
// Включим тактирование RTC
RCC->BDCR |= RCC_BDCR_RTCEN;
// Снимем защиту от записи с регистров RTC
rtc_Unlock();
{
// Войдём в режим инициализации:
RTC->ISR |= RTC_ISR_INIT;
// Ждём, когда это произойдёт
while(!(RTC->ISR & RTC_ISR_INITF)) {}
// Часы остановлены. Режим инициализации
// Настроим предделитель для получения частоты 1 Гц.

{
uint32_t Sync = 255; // 15 бит
uint32_t Async = 127; // 7 бит
// Сначала записываем величину для синхронного предделителя
RTC->PRER = Sync;
// Теперь добавим для асинхронного предделителя
RTC->PRER = Sync | (Async << 16);
}
// Переведём часы в 24-часовой формат
RTC->CR |= RTC_CR_FMT;
// Инициализация закончилась
RTC->ISR &= ~RTC_ISR_INIT;
}
rtc_Lock();
// Всё, часы запустились и считают время.
}


// Выключить защиту от записи
void rtc_Unlock(void)
{ // Запишем эти значения по очереди
RTC->WPR = 0xCA;
RTC->WPR = 0x53;}

// Включить защиту от записи
void rtc_Lock(void)
{ // Запишем какую-нибудь фигню, главное, чтоб не правильную
RTC->WPR = 0xFF;}


Да всё установлено. biggrin.gif

Сообщение отредактировал IgorKossak - Nov 21 2013, 08:22
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
adnega
сообщение Nov 21 2013, 06:31
Сообщение #97


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(glags @ Nov 21 2013, 02:21) *
Код
    // Сбросим состояние энергонезависимого домена
    RCC->BDCR |=  RCC_BDCR_BDRST;
    RCC->BDCR &= ~RCC_BDCR_BDRST;

Вроде, все Ок.
Попробуйте временно закомментировать эти строчки.
Вопросик: а проц у Вас какой? А то эта тема про новый STM32F42x. Если это он - тоды ой - я с ним пока не работал.
Go to the top of the page
 
+Quote Post
glags
сообщение Nov 21 2013, 07:27
Сообщение #98


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 9-05-13
Из: Львов, Украина
Пользователь №: 76 782



Цитата(adnega @ Nov 21 2013, 09:31) *
Вроде, все Ок.
Попробуйте временно закомментировать эти строчки.
Вопросик: а проц у Вас какой? А то эта тема про новый STM32F42x. Если это он - тоды ой - я с ним пока не работал.

У меня STM32F407. Эти строчки нет смысла убирать, они делают как бы ресет бэкап домену. А вся процедура инициализации, запускается только один раз. После того как часы затикали, то она игнорится. Это в первой строке инициализации.
Go to the top of the page
 
+Quote Post
adnega
сообщение Nov 21 2013, 09:11
Сообщение #99


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(glags @ Nov 21 2013, 11:27) *
У меня STM32F407. Эти строчки нет смысла убирать, они делают как бы ресет бэкап домену. А вся процедура инициализации, запускается только один раз. После того как часы затикали, то она игнорится. Это в первой строке инициализации.

Т.е. если часы настроены, то указанные мной битики не взводятся?
Эти битики сбрасываются при ресете!
Go to the top of the page
 
+Quote Post
glags
сообщение Nov 21 2013, 11:39
Сообщение #100


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 9-05-13
Из: Львов, Украина
Пользователь №: 76 782



Цитата(adnega @ Nov 21 2013, 12:11) *
Т.е. если часы настроены, то указанные мной битики не взводятся?
Эти битики сбрасываются при ресете!


Вопрос решён, надо было в самом начале инициализации разрешить доступ к регистрам
PWR->CR |= PWR_CR_DBP;
Go to the top of the page
 
+Quote Post

7 страниц V  « < 5 6 7
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 20:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01765 секунд с 7
ELECTRONIX ©2004-2016