26.01.2013, 17:03
|
|
Прописка
Регистрация: 10.08.2010
Сообщений: 113
Сказал спасибо: 30
Сказали Спасибо 43 раз(а) в 26 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сделайте так, что бы получить CNF9=10b :
GPIOA-›CRH |=GPIO_CRH_CNF9_1;
|
|
|
|
26.01.2013, 17:25
|
|
Временная регистрация
Регистрация: 25.09.2008
Сообщений: 95
Сказал спасибо: 39
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от dosikus
|
Да ? А по вашему коду вы сбрасываете биты ...
Код:
|
GPIOA-›CRH &=~(GPIO_CRH_CNF8|GPIO_CRH_CNF9_0); |
|
и как ет я так...как говориться смотрю в книгу вижу фигу. Изменил, что то зашевелилось но пока принимаю бурду-настроил скорость и все зажило
Последний раз редактировалось wellcom; 26.01.2013 в 17:46.
|
|
|
|
26.01.2013, 17:46
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от dosikus
|
И снова здравствуйте ...
Как вам расчет скорости UART в этой вашей распрекрасной либе.
Который заменяется на простейшее ...
|
Код:
|
/* Determine the integer part */
if ((USARTx-›CR1 & CR1_OVER8_Set) != 0)
{
/* Integer part computing in case Oversampling mode is 8 Samples */
integerdivider = ((25 * apbclock) / (2 * (USART_InitStruct-›USART_BaudRate)));
}
else /* if ((USARTx-›CR1 & CR1_OVER8_Set) == 0) */
{
/* Integer part computing in case Oversampling mode is 16 Samples */
integerdivider = ((25 * apbclock) / (4 * (USART_InitStruct-›USART_BaudRate)));
}
tmpreg = (integerdivider / 100) ‹‹ 4;
/* Determine the fractional part */
fractionaldivider = integerdivider - (100 * (tmpreg ›› 4));
/* Implement the fractional part in the register */
if ((USARTx-›CR1 & CR1_OVER8_Set) != 0)
{
tmpreg |= ((((fractionaldivider * 8) + 50) / 100)) & ((uint8_t)0x07);
}
else /* if ((USARTx-›CR1 & CR1_OVER8_Set) == 0) */
{
tmpreg |= ((((fractionaldivider * 16) + 50) / 100)) & ((uint8_t)0x0F);
}
/* Write to USART BRR */
USARTx-›BRR = (uint16_t)tmpreg; |
Нормальный рассчет. Вся математика выполняется компилятором. В регистр пишется готовое значение.
|
|
|
|
26.01.2013, 17:52
|
|
Прописка
Регистрация: 10.08.2010
Сообщений: 113
Сказал спасибо: 30
Сказали Спасибо 43 раз(а) в 26 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Easyrider83
|
Нормальный рассчет
|
А я как-то так считаю USART1-›BRR= (uint32_t) ( (SYSTEMCLOCK+(br/2))/br )
|
|
|
Сказали "Спасибо" avs2009
|
|
|
26.01.2013, 17:56
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Easyrider83
|
Нормальный рассчет. Вся математика выполняется компилятором. В регистр пишется готовое значение.
|
"Элегантным движением брюки превращаются в шорты"
Код:
|
static const uint32_t apbClk = 36000000; // APB1
....
CalculateBaudrateSettings(uint32_t sabclk, uint32_t baudrate)
{
return ((2 * sabclk) / baudrate + 1) / 2; // или (sabclk+baudrate/2)/baudrate;
}
....
USART2-›BRR = calculateBaudrateSettings(apbClk, baudrate); |
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 26.01.2013 в 18:00.
|
|
|
|
28.01.2013, 10:51
|
|
Прописка
Регистрация: 20.02.2006
Сообщений: 284
Сказал спасибо: 9
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Не мог бы кто проверить, правильно ли я развел питание для STM32?
|
|
|
|
29.01.2013, 00:00
|
|
Гражданин KAZUS.RU
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Особо мжно не волноваться. Работают очень устойчиво.
|
|
|
|
29.01.2013, 09:53
|
|
Временная регистрация
Регистрация: 18.07.2012
Сообщений: 73
Сказал спасибо: 4
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
I2C крайне не красывый, на мой взгляд. Потратил на него уже 2 дня, а работать как должен - устойчиво, не хочет. В Пиках вся работа с чтением изаписью помещалась в 10 строчках кода, причем и библиотек особых не нужно было. Тут же сразу не заработало, посмотрел библиотеку, а там....У меня вся остальная математика меньше места занимает. Серьезный камень, несерьъезный I2C тоже превратился в серъезный "интерфейс"...
|
|
|
|
29.01.2013, 10:22
|
|
Гражданин KAZUS.RU
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от TAutomatic
|
Серьезный камень, несерьъезный I2C ...
|
И да и нет. Я правда на AVR работал. Там тоже определённые танцы с бубном. Но на самом деле в более простых контролерах более простые интерфейсы. Менее универсальные. В связи с этим работать с ними проще.
Приведу пример ...
Если в I2С контроллер ждёт сигнала ASK от внешнего устройства, но при этом не выдаёт строб, то ч/з некоторое время внешнее устройство снимет ASK самопроизвольно (чтобы не блокировать линию SDA в случае ошибки). Именно так и работает I2C slave в STM8/ STM32. В AVR произойдёт блокировка. По крайней мере я не видел такого поведения. Кроме того I2C автоматически отрабатывает режим мультимастер. То есть можно притомозить ведущий контроллер зажав слэйвом SCL в нуле. Могу ошибиться, но по-моему этого тоже не было.
Ну и так далее. Даже SPI и то не без приключений на stm. Я вон начал целую тему на электрониксе ... там обсуждали ... Ребята все подробности вскрыли.
|
|
|
|
29.01.2013, 10:28
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
TAutomatic, SasaVitebsk, Может все намного проще ????
__________________
Осторожно , злой кот
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:27.
|
|