Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 11.02.2017, 21:31  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Ругается в проекте что нет core_cm3.h, в паке его нет.Есть подозрение что не только этот файлик попросит.
Пытался скачать с сайта stm пак,но соединение сбрасывается.
Миниатюры:
Нажмите на изображение для увеличения
Название: 2017-02-12_01-30-38.png
Просмотров: 0
Размер:	52.7 Кб
ID:	110107   Нажмите на изображение для увеличения
Название: 2017-02-12_01-35-44.png
Просмотров: 0
Размер:	25.0 Кб
ID:	110108  
Реклама:
__________________
Глаза боятся,а руки делают.

Последний раз редактировалось CERGEI1982; 11.02.2017 в 21:36.
CERGEI1982 вне форума  
Непрочитано 11.02.2017, 23:37  
zöner
Гражданин KAZUS.RU
 
Регистрация: 16.02.2012
Сообщений: 441
Сказал спасибо: 89
Сказали Спасибо 735 раз(а) в 149 сообщении(ях)
zöner на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

это хедеры ядра Cortex-Mx от ARMа, а не от ST.
вот версия 3.20: cmsis.3.20.zip, из-за дебильной регистрации невозможно скачать свежую с родного сайта: https://www.arm.com/products/process...e-standard.php

Последний раз редактировалось zöner; 12.02.2017 в 16:03.
zöner вне форума  
Непрочитано 12.02.2017, 03:29  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Благодарю за помощь,уже стыдно часто спрашивать то,но. Проблема при компиляции теперь с assert_param.
Миниатюры:
Нажмите на изображение для увеличения
Название: 2017-02-12_07-28-37.png
Просмотров: 0
Размер:	109.6 Кб
ID:	110115  
Вложения:
Тип файла: rar yrok_video.rar (2.63 Мб, 0 просмотров)
__________________
Глаза боятся,а руки делают.
CERGEI1982 вне форума  
Непрочитано 12.02.2017, 16:00  
zöner
Гражданин KAZUS.RU
 
Регистрация: 16.02.2012
Сообщений: 441
Сказал спасибо: 89
Сказали Спасибо 735 раз(а) в 149 сообщении(ях)
zöner на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

в stm32f0xx_conf.h assert_param отключен (используется только для детальной отладки):
Код:
#define assert_param(expr) ((void)0)
можно описать в любом глобальном хедере или в настройках проекта (я добавил в main.h)

Последний раз редактировалось zöner; 12.02.2017 в 16:03.
zöner вне форума  
Непрочитано 13.02.2017, 02:26  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от zöner Посмотреть сообщение
в stm32f0xx_conf.h assert_param отключен (используется только для детальной отладки):
Код:
#define assert_param(expr) ((void)0)
можно описать в любом глобальном хедере или в настройках проекта (я добавил в main.h)
Да спасибо помогло.
А вы применяли эту детальную отладку? Если да как это делает или есть где прочитать?
и что обозначает это выражение
Код:
#define assert_param(expr) ((void)0)
Присвоение функции ((void)0) ?
__________________
Глаза боятся,а руки делают.
CERGEI1982 вне форума  
Непрочитано 13.02.2017, 14:04  
zöner
Гражданин KAZUS.RU
 
Регистрация: 16.02.2012
Сообщений: 441
Сказал спасибо: 89
Сказали Спасибо 735 раз(а) в 149 сообщении(ях)
zöner на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

выражение непонятное, наверно можно заменить пробелом
zöner вне форума  
Непрочитано 14.02.2017, 00:30  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Чертовщина какая-то! Пытаюсь настроить таймер 3 на SM32F030, чтобы он по DMA заменял регистры ARR и CCR1 на каждое событие update. Сделал так:
Код:
static uint16_t table[] = {400,500,600,700,800,900};
static void tim3_setup(){
    RCC-›APB1ENR |= RCC_APB1ENR_TIM3EN; // enable clocking
    RCC-›AHBENR |= RCC_AHBENR_DMA1EN;
    //TIM3-›CR1 = TIM_CR1_UDIS; // disable update event
    TIM3-›CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1; // PWM mode 1: acive-›inactive, preload enable
    TIM3-›PSC = 47999; // 1kHz
    TIM3-›ARR = 500; // period 0.5sec
    TIM3-›CCR1 = 300; // 0.3sec LED lights and 0.2sec off
    TIM3-›CCER = TIM_CCER_CC1P | TIM_CCER_CC1E; // turn it on, active low
    // DMA ch3 - TIM3_UP
    DMA1_Channel3-›CPAR = (uint32_t)(&(TIM3-›DMAR)); // TIM3_ch1
    //DMA1_Channel3-›CPAR = (uint32_t)(&(TIM3-›ARR));
    DMA1_Channel3-›CMAR = (uint32_t)(table);
    DMA1_Channel3-›CNDTR = 6;
    // circular, memsiz 16bit, psiz 32bit, memincrement, from memory
    DMA1_Channel3-›CCR |=  DMA_CCR_MSIZE_0 | DMA_CCR_PSIZE_1
                       | DMA_CCR_MINC | DMA_CCR_DIR;
    TIM3-›DCR = (0 ‹‹ 8) // three bytes
            + 13; // ARR, [not used], ccr1
    TIM3-›DIER = TIM_DIER_UDE; // enable DMA requests
    TIM3-›CR1 |= TIM_CR1_CEN; // turn it on
    DMA1_Channel3-›CCR |= DMA_CCR_EN | DMA_CCR_TCIE; // turn on DMA
    TIM3-›EGR |= TIM_EGR_UG; // force update generation
}
(пока хотя бы ARR), но ничего не работает: вместо шести импульсов разных длительностей имею один, причем длительностью около двух секунд!
Написать DMA1_Channel3-›CPAR = (uint32_t)(&(TIM3-›ARR)) я не могу, т.к. надо еще и CCR1 обновлять.
В прерываниях обновлять не хочется — есть же DMA! Этот канал больше нигде не используется (UART1 работает по прерыванию на прием, а на передачу использует канал 3 DMA).

Может у кого-нибудь есть пример рабочего кода? А то теряюсь: даже в даташите чертовщина какая-то (то пишут, что в TIM3_DCR DBL есть количество передач минус один, то без "минус один").
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума  
Непрочитано 14.02.2017, 00:42  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Ну я и дурень! Надо было не вручную считать (в таблице пару регистров дважды написали), а задать по смещению. Вот так работает:
Код:
static uint16_t table[] = { 200,0,100, 200,0,100, 400,0,100,
                            400,0,300, 400,0,300, 600,0,300,
                            200,0,100, 200,0,100, 800,0,100};

// Tim3_ch1 - PA6, 48MHz -› 1kHz
static void tim3_setup(){
    RCC-›APB1ENR |= RCC_APB1ENR_TIM3EN; // enable clocking
    RCC-›AHBENR |= RCC_AHBENR_DMA1EN;
    //TIM3-›CR1 = TIM_CR1_UDIS; // disable update event
    TIM3-›CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1; // PWM mode 1: acive-›inactive, preload enable
    TIM3-›PSC = 47999; // 1kHz
    TIM3-›ARR = 500; // period 0.5sec
    TIM3-›CCR1 = 300; // 0.3sec LED lights and 0.2sec off
    TIM3-›CCER = TIM_CCER_CC1P | TIM_CCER_CC1E; // turn it on, active low
    // DMA ch3 - TIM3_UP
    DMA1_Channel3-›CPAR = (uint32_t)(&(TIM3-›DMAR)); // TIM3_ch1
    DMA1_Channel3-›CMAR = (uint32_t)(table);
    DMA1_Channel3-›CNDTR = 27;
    // memsiz 16bit, psiz 32bit, memincrement, from memory
    DMA1_Channel3-›CCR |=  DMA_CCR_MSIZE_0 | DMA_CCR_PSIZE_1
                       | DMA_CCR_MINC | DMA_CCR_DIR;
    TIM3-›DCR = (2 ‹‹ 8) // three bytes
                + (((uint32_t)&TIM3-›ARR - (uint32_t)&TIM3-›CR1) ›› 2);
    TIM3-›DIER = TIM_DIER_UDE; // enable DMA requests
    TIM3-›CR1 |= TIM_CR1_CEN; // turn it on
    DMA1_Channel3-›CCR |= DMA_CCR_EN | DMA_CCR_TCIE; // turn on DMA
    TIM3-›EGR |= TIM_EGR_UG; // force update generation
}
Теперь буду писать обработчик USART'а, чтобы морзянить входную строку.
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума  
Сказали "Спасибо" eddy
majorka65 (14.02.2017)
Непрочитано 14.02.2017, 01:17  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Работа через DMAR.
TIM3 - формирование ШИМ,
TIM1 - изменение скважности ШИМ, запускает DMA Ch5, а он в свою очередь пересылает данные скважности из памяти в регистр TIM3-›DMAR, который является настроенной ссылкой на регистр TIM3-›CCR4. То есть, записывая в DMAR, фактически попадаем в CCR4, потому что в TIM3-›DCR (DBA) указано приращение адреса CCR4 относительно CR1.
А DCR (DBL) определяет количество последовательно идущих регистров, начиная с базового адреса, которые будут загружены за один раз. Это не количество импульсов, это количество загружаемых через DMA регистров за один раз. Пакетная передача. Позволяет например за раз одновременно загрузить или прочитать все 4 регистра CCR.
Причем, счетчик передач CNDTR в DMA уменьшится сразу на число одновременно загружаемых регистров.

Нажмите, чтобы открыть спойлер

PHP код:
void PWM_Init(uint32_t addressuint16_t buff_size)
{
    
RCC-›AHBENR |= RCC_AHBENR_GPIOBEN RCC_AHBENR_DMAEN;    // Тактирование GPIOB и DMA1
    
RCC-›APB1ENR |= RCC_APB1ENR_TIM3EN;                        // Тактирование TIM3

    
GPIOB-›MODER |= GPIO_MODER_MODER1_1;                    //PB1 - AF PP
    
GPIOB-›AFR[0] |= 0x01‹‹(4*1);                            //PB1 - AF1 TIM3

    
TIM3-›CCMR2 TIM_CCMR2_OC4M_1 TIM_CCMR2_OC4M_2 |        // PWM mode1
                
TIM_CCMR2_OC4PE;                            // Preload CCR
    
TIM3-›PSC 0;                                            // на частоте APB1
    
TIM3-›ARR 2048-1;                                        // 10 бит PWM
    
TIM3-›CCR4 1023;                                        // 50% PWM, средняя точка
    
TIM3-›CCER TIM_CCER_CC4E;                                // Out enable
    
TIM3-›DCR 0x10;                                        // доступ к CCR4

    /* настройка DMA для передачи значения в ШИМ */
    
DMA1_Channel5-›CCR DMA_CCR_MSIZE_0 |                    // 16 bit
                       
DMA_CCR_PSIZE_0 |                    // 16 bit
                       
DMA_CCR_MINC |                         // Mem incr
                       
DMA_CCR_DIR |                         // Mem-›Periph
                       
DMA_CCR_PL_0 |                        // приоритет средний
                       
DMA_CCR_CIRC;                        // Circ mode 
    
DMA1_Channel5-›CMAR address;                            // адрес массива
    
DMA1_Channel5-›CPAR = (uint32_t)&TIM3-›DMAR;            // адрес промежуточного регистра в TIM3
    
DMA1_Channel5-›CNDTR buff_size;                        // размер буфера
    
DMA1_Channel5-›CCR |= DMA_CCR_EN;                        // канал включен

    
TIM3-›CR1 |= TIM_CR1_CEN;
}

void SampleRate_Generator_Init(uint32_t SampleRate_ADCuint8_t DAC_divider)
{
    
/* SampleRate = SystemCoreClock / (PSC * ARR) */
    /* ARR = SystemCoreClock / (SampleRate * PSC) */
    /* PSC = 1:1  */

    
RCC-›APB2ENR |= RCC_APB2ENR_TIM1EN;                    // Тактирование таймера

    
TIM1-›PSC 0;                                        //
    
TIM1-›ARR SystemCoreClock / (SampleRate_ADC) - 1;    // частота работы таймера
    
TIM1-›RCR DAC_divider-1;                            // коэффициент деления для DAC
    
TIM1-›CCR4 2;                                        // сдвиг события по времени
    
TIM1-›CR2 TIM_CR2_MMS;                            // TRGO CCR4 для запуска АЦП
    
TIM1-›CCMR2 TIM_CCMR2_OC4M;                        //
    
TIM1-›DIER TIM_DIER_UDE;                        // генерация запроса DMA по UEV для PWM-DAC

    
TIM1-›CR1 |= TIM_CR1_CEN;                            // запуск генератора


NewWriter вне форума  
Сказали "Спасибо" NewWriter
majorka65 (14.02.2017)
Непрочитано 18.02.2017, 09:23  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

А что за буфер настраивается?
Код:
    /* Enable Prefetch Buffer */
    FLASH-›ACR |= FLASH_ACR_PRFTBE;

    /* Flash 2 wait state */
    FLASH-›ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY);
    FLASH-›ACR |= (uint32_t)FLASH_ACR_LATENCY_2;
__________________
Глаза боятся,а руки делают.
CERGEI1982 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
ARM Cortex M3 + Linux SiMiLya Микроконтроллеры, АЦП, память и т.д 10 17.06.2011 17:20
Помогите с STM32 - очень нужно... yakuzaa Микроконтроллеры, АЦП, память и т.д 60 04.08.2010 11:04
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


Часовой пояс GMT +4, время: 05:28.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot