|
|
  |
STM32 – вопросы – проблемы - решения. |
|
|
|
Mar 25 2012, 16:06
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(Сергей Борщ @ Feb 2 2012, 17:26)  Итого: BRR = 22*16 + 12 = 364. Две записи в регистр, одно чтение и операция "Или". (42e6 * 16)/(16*115200) = 42e6 / 115200 = 364. Мистика, не правда ли? ... Одна запись в регистр. Не трогая калькулятор. И если скорость или частоту изменить понадобится - тоже калькулятор не понадобится, не говоря уже о том, чтобы внимательно просматривать весь исходник в поисках таких магических цифр как ваши 22 и 12. Есть тонкость, связанная с нецелым делением частоты на скорость. Я тоже делил просто: Код USART2->BRR = (36000000 / 57600); Получалось число без остатка (625), все работало идеально. Но когда пришлось делить 32000000 на 57600, получилось 555,555... И это число желательно округлить до 556, тогда ошибка будет меньше. Делаю так (прибавляю 0,5 к результату, потом дробную часть теряю): Код USART1->BRR = (((32000000<<1) / 57600) + 1)>>1; В результате загружается 556 = 0x22C. В мануале RM0038 на STM32L151 именно это число, разбитое на 0x22 (37) и 0xC (0,75), показано в таблице 129. Вашему числу, кстати, тоже единички недостает.
|
|
|
|
|
Mar 25 2012, 19:18
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Тогда уж лучше так: Код USART2->BRR = (36000000 + 57600 / 2) / 57600; Нагляднее, мне кажется. А вообще разница между 555 и 556 настолько мала, что и говорить не о чем :-)
|
|
|
|
|
Apr 8 2012, 12:39
|

Гуру
     
Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702

|
Цитата(smk @ Apr 8 2012, 15:33)  Там от состояния выводов BOOT0 и BOOT1 все зависит. У меня BOOT0 на земле, а BOOT1 висит в воздухе. Это означает Main Flash memory is selected as the boot space . А что ещё делать с BOOT , что бы работать по jtag ? И ещё попрос : почему процессор STM32L151CBU6 вылетает из отладки и keil начинает ругатся на jtag communication falure после вот этой строчки , которая не влияет на пини jtag ? Все остальные подобные строчки проходятся. GPIOA->BSRRL=GPIO_BSRR_BS_2 ;
--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
|
|
|
|
|
Apr 9 2012, 05:44
|
Частый гость
 
Группа: Свой
Сообщений: 88
Регистрация: 9-04-12
Пользователь №: 71 256

|
Делаю первые отладки на IAR EWARM v6.21 для STM32F105BG Вопрос по отладке с помощью Simulator Не получается запустить счетчик (TIM2 и др.пробовал). На "живом" CPU ч/з SWD - все работает , счетчик считает отлично. Т.е. TIM2_CNT при каждой остановке показывет насчитананное. Перехожу на отладку симулятором IAR. Счетчик стоит как замороженный. Пробовал примеры из библиотеки, а также просто вызовами ф-ций станд.периф. библиотеки. Не хочет считать! Теперь упростил до минимума- все равно не считает! Вот упрощенный до предела кодик: int main(void){ RCC->APB1ENR |= (uint32_t)0x00000001; TIM2->CR1 |= (uint32_t)0x00000001; while (1) { } } TIM2_CNT не хочет изменяться, стоит на 0. Подскажите пжста в чем загвоздка?
|
|
|
|
|
Apr 9 2012, 23:02
|
Частый гость
 
Группа: Свой
Сообщений: 88
Регистрация: 9-04-12
Пользователь №: 71 256

|
Цитата(Сергей Борщ @ Apr 9 2012, 18:15)  Загвоздка в том, что вы поленились прочитать документацию на симулятор IAR (C-SPY). В ней английским по белому написано, что симулятор симулирует только ядро, и никак не симулирует периферию. Спасибо! Хотя это несколько не ожиданно! Это резко затрудняет отладочный процесс. Особенно при отсутствии рабочей платы C-Spy читал , но повидимому не достаточно внимательно. Не ожидал такого подхода со стороны IAR! :-(
|
|
|
|
|
Apr 10 2012, 00:59
|
Частый гость
 
Группа: Свой
Сообщений: 88
Регистрация: 9-04-12
Пользователь №: 71 256

|
Цитата(Сергей Борщ @ Apr 9 2012, 17:15)  Загвоздка в том, что вы поленились прочитать документацию на симулятор IAR (C-SPY). В ней английским по белому написано, что симулятор симулирует только ядро, и никак не симулирует периферию. Для того, чтобы разобраться взял "C-SPY® Debugging Guide" В нем, в разделе "The IAR C-SPY Simulator - FEATURES" стр.38 четко написано: "...In addition to the general features in C-SPY, the simulator also provides: ... Peripheral simulation (using the C-SPY macro system in conjunction with immediate breakpoints). .." Не смогли бы Вы мне уточнить, где же написано про отсутствие поддержки периферии в Simulator? Буду Вам благодарен! :-)
|
|
|
|
|
Apr 10 2012, 05:59
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (bingo @ Apr 10 2012, 03:59)  Для того, чтобы разобраться взял "C-SPY® Debugging Guide" В нем, в разделе "The IAR C-SPY Simulator - FEATURES" стр.38 четко написано:
"...In addition to the general features in C-SPY, the simulator also provides: ... Peripheral simulation (using the C-SPY macro system in conjunction with immediate breakpoints). .." Вот именно. Если вы прочитаете описание этой macro system, то поймете, что вам предлагается использовать макросы C-SPY чтобы самому этими макросами описать поведение вашей периферии. И что же вы будете отлаживать - свою программу или свою модель периферии процессора из этих макросов? Это если у вас хватит терпения описать на этих макросах хотя бы один периферийный модуль. QUOTE (bingo @ Apr 10 2012, 03:59)  Не смогли бы Вы мне уточнить, где же написано про отсутствие поддержки периферии в Simulator? Как раз в отцитированном вами фрагменте.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
  |
6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0
|
|
|