11.10.2015, 14:43
|
|
Гражданин KAZUS.RU
Регистрация: 16.02.2012
Сообщений: 441
Сказал спасибо: 89
Сказали Спасибо 735 раз(а) в 149 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
как программно сбросить прескалеры таймера?
|
|
|
|
11.10.2015, 15:53
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Битами типа APBRST
|
|
|
|
11.10.2015, 16:10
|
|
Гражданин KAZUS.RU
Регистрация: 16.02.2012
Сообщений: 441
Сказал спасибо: 89
Сказали Спасибо 735 раз(а) в 149 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
судя по этому достаточно сгенерировать Update event ?
![](http://i.piccy.info/i9/eac45665addf25a1ec0c6a1f4b4bcd5b/1444565350/5616/822183/Screenshot_10112015_03_07_30_PM_240.jpg)
|
|
|
|
16.11.2015, 13:02
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Что-то нет прикрепленной темы по M4, поэтому здесь вопрос задам: какова наибольшая достижимая скорость на USB STM32F407? Потянет ли 24Мбит/с (для стерео-DXD)? Думаю вот, сделать преобразователь сигналов для ЦАПа на нем или же выбрать какой-нибудь другой микроконтроллер (желательно STM32)?
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
22.11.2015, 17:28
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
При помощи утилиты STM32CubeMX шаблон проекта создается в три клика, ну почти. Испытал на себе.
1. Запускаем STM32CubeMX
2. Новый проект (New Project)
3. Выбираем контроллер (у меня STM32F103RB демоплата MINI-STM32 V.3)
4. Выбираю АЦП1, IN8 (PB0)
5. Добавляем RCC
6. Выбираем USB-DeviceFS и на верху, в выпадающем списке VirtualCOM CDC
7. Настраиваем тактирование портов.
8. Нажимаем кнопку создать проект, я выбираю Keil
9. Компилируем и подключаем к ПК, появляется VirtualComPort, ставим драйверы.
10. Остальное дописываем по своему вкусу.
|
|
|
|
22.11.2015, 21:55
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
IOPA4, радость быстро закончится, когда надо будет выйти за пределы вольтметра.
|
|
|
|
22.11.2015, 23:40
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Easyrider83, for example. Сильно не радуюсь, все упирается пока в ПП, остальное только во время. Пробовал пяток LCD, I2C, DMA.
|
|
|
|
12.12.2015, 14:54
|
|
Гражданин KAZUS.RU
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Добрый день! Вопрос такой: у меня есть старый рабочий проект под STM32F103C8, хочу добавить новые функции к нему используя STM32Cube и библиотеку HAL, как я слышал, HAL несовместима с StdPeriph, т.е. мне придется весь код оптимизировать под HAL?
__________________
То, что нас не убивает - делает нас сильнее
|
|
|
|
12.01.2016, 17:04
|
|
Гражданин KAZUS.RU
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Да там надо будет переписать. Имена функций не совпадают, некоторые заменены макросами... CMSIS посвежее и так далее.
|
|
|
|
22.01.2016, 01:33
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Мужики! Гневно негодую и грызу себя изнутри! Весь вечер пытался завести на STM32F102 DMA для передачи данных из буфера в GPIO (через регистр ODR). Ну нифига не получается! Понятно, что это элементарно с приличной скоростью делается тупо в прерывании таймера, который все равно надо заводить для пинания DMA, но вот я уперся, и хочу таки через ПДП сделать. Может мне кто-нибудь объяснить, как регистры настроить? Я уже и с mem2mem пробовал, и без него. Вот кусок непотребного кода. Инициализация:
Код:
|
void dmagpio_init(){
rcc_periph_clock_enable(RCC_TIM2);
rcc_periph_clock_enable(RCC_DMA1);
timer_reset(TIM2);
timer_set_mode(TIM2, TIM_CR1_CKD_CK_INT, TIM_CR1_CMS_EDGE, TIM_CR1_DIR_UP);
TIM2_PSC = 8;
TIM2_ARR = 39;
TIM2_DIER = TIM_DIER_UDE;
dma_channel_reset(DMA1, DMA_CHANNEL2);
DMA1_CCR2 = DMA_CCR_MEM2MEM | DMA_CCR_PL_MEDIUM | DMA_CCR_MSIZE_16BIT |
DMA_CCR_PSIZE_16BIT | DMA_CCR_MINC | DMA_CCR_DIR | DMA_CCR_TCIE | DMA_CCR_TEIE ;
nvic_enable_irq(NVIC_DMA1_CHANNEL2_IRQ);
DMA1_CPAR2 = DMAGPIO_TARGADDR;
DMA1_CMAR2 = (uint32_t) gpiobuff;
} |
Запуск передачи:
Код:
|
void dmagpio_transfer(uint8_t *databuf, uint32_t length){
while(DMA1_CCR2 & DMA_CCR_EN);
transfer_complete = 0;
DMA1_IFCR = 0xff00; // clear all flags for ch2
DMA1_CPAR2 = DMAGPIO_TARGADDR;
DMA1_CMAR2 = (uint32_t) gpiobuff;
DMA1_CNDTR2 = length;
uint32_t i;
for(i = 0; i ‹ length; ++i) gpiobuff[i] = databuf[i];
TIM2_CR1 |= TIM_CR1_CEN;
DMA1_CCR2 |= DMA_CCR_EN;
} |
(копирую данные из восьмибитного буфера в 16-битный, т.к. иначе ПДП ни в какую работать не хочет).
Ну и прерывание ПДП, устанавливающее флаг готовности:
Код:
|
void dma1_channel2_isr(){
if(DMA1_ISR & DMA_ISR_TCIF2){
transfer_complete = 1;
TIM2_CR1 &= ~TIM_CR1_CEN;
DMA1_CCR2 &= ~DMA_CCR_EN;
DMA1_IFCR = DMA_IFCR_CTCIF2;
}else if(DMA1_ISR & DMA_ISR_TEIF2){
P("Error\n");
DMA1_IFCR = DMA_IFCR_CTEIF2;
TIM2_CR1 &= ~TIM_CR1_CEN;
DMA1_CCR2 &= ~DMA_CCR_EN;
}
} |
Вот что за нафиг такой?
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:13.
|
|