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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> STM32F103T8, Ride7, ШИМ на PB7
AndreyKeil
сообщение Aug 17 2010, 09:23
Сообщение #16


Частый гость
**

Группа: Свой
Сообщений: 96
Регистрация: 16-11-05
Из: г.Екатеринбург
Пользователь №: 10 930



Цитата(AHTOXA @ Aug 17 2010, 15:14) *
А куда делась строка
Код
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

?

...остальные:
последний файл хеадер:
Прикрепленные файлы
Прикрепленный файл  stm32f10x_gpio.txt ( 21.98 килобайт ) Кол-во скачиваний: 28
Прикрепленный файл  stm32f10x_rcc.txt ( 42.56 килобайт ) Кол-во скачиваний: 318
Прикрепленный файл  stm32f10x_gpio.txt ( 14.47 килобайт ) Кол-во скачиваний: 27
 
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 17 2010, 09:50
Сообщение #17


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Да не. Где вызов этой функции?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
adnega
сообщение Aug 17 2010, 09:52
Сообщение #18


Гуру
******

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



Попробывал код из сообщения #8. Все работает и в симуляторе (Keil) и в железе (STM32F103T8U6)!
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 17 2010, 09:54
Сообщение #19


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



И, кстати, откуда вдруг появилась строка
Код
    AFIO->MAPR|=0x00001000;

?
Вам же не нужен ремап. Вы что, методом научного тыка пытаетесь запустить PWM?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
AndreyKeil
сообщение Aug 17 2010, 10:15
Сообщение #20


Частый гость
**

Группа: Свой
Сообщений: 96
Регистрация: 16-11-05
Из: г.Екатеринбург
Пользователь №: 10 930



Цитата(AHTOXA @ Aug 17 2010, 15:50) *
Да не. Где вызов этой функции?

В файле "stm32f10x_rcc"

Цитата(AHTOXA)
И, кстати, откуда вдруг появилась строка
Код
AFIO->MAPR|=0x00001000;

?
Вам же не нужен ремап. Вы что, методом научного тыка пытаетесь запустить PWM?

... blush.gif я уж и не знаю что делать.
Подозреваю, что что-то до настроек таймера не сделал.

Цитата(adnega @ Aug 17 2010, 15:52) *
Попробывал код из сообщения #8. Все работает и в симуляторе (Keil) и в железе (STM32F103T8U6)!

здесь не полный код. Нет настроек каких-то,которые идут до таймера.
Go to the top of the page
 
+Quote Post
adnega
сообщение Aug 17 2010, 10:58
Сообщение #21


Гуру
******

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



Цитата(AndreyKeil @ Aug 17 2010, 14:15) *
здесь не полный код. Нет настроек каких-то,которые идут до таймера.


Здесь достаточный код для генерации ШИМ сигнала на ноге PB7 указанного МК)

А Вы его уже запускали?

Достаточно:
1. Включить тактовые частоты таймера, порта, альтернативных функций;
2. Настроить порт на альтернативную функцию;
3. Настроить таймер на генерацию ШИМ;
4. Зациклится на месте.

0. Не использовать библиотеку от ST (опционально)
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 17 2010, 11:30
Сообщение #22


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(AndreyKeil @ Aug 17 2010, 16:15) *
В файле "stm32f10x_rcc"


У-у-у, как всё запущеноsmile.gif
В файле stm32f10x_rcc.c - не вызов, а определение этой функции.

Давайте по порядку. Вот наш main():
Код
void main()
{
// 1. Инициализируем клоки:
    RCC_Configuration();

// 2. Инициализируем контроллер прерываний:
    NVIC_Configuration();

// 3. Включаем порт B:
    RCC->APB2ENR |= RCC_APB2ENR_IOPBEN;

// 4. Включаем альтернативные функции:
    RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;

// 5. Включаем таймер4:
    RCC->APB1ENR |= RCC_APB1ENR_TIM4EN;

// 6. Сконфигурируем ногу PB7 как альтернативный output:
    GPIOB->CRL=0xB0000000;

// 7. Теперь займёмся конфигурированием таймера:
    TIM4->CR1 = TIM_CR1_ARPE;        // считаем вверх, автоперезагрузка, без делителя
    TIM4->CR2 = 0;                // здесь ничего не нужно
    TIM4->ARR = 36;                // период таймера
    TIM4->PSC = 0;                // прескалер
    TIM4->EGR = TIM_EGR_UG;        // обновим прескалер немедленно

// 8. А теперь сконфигурим 2й канал таймера:
    TIM4->CCER &= ~(TIM_CCER_CC2E | TIM_CCER_CC2P);    // отключим вывод
    TIM4->CCR2 = 18;        // период
    TIM4->CCMR1 =
        TIM_CCMR1_OC2M_2 |
        TIM_CCMR1_OC2M_1 |
        TIM_CCMR1_OC2PE; // PWM 1 (0x6000), предзагрузка;
    TIM4->CCER |= TIM_CCER_CC2E;    // включаем вывод 2

// 9. И, наконец, запустим таймер:
    TIM4->CR1 |= TIM_CR1_CEN;
}

И всё!


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
AndreyKeil
сообщение Aug 17 2010, 14:49
Сообщение #23


Частый гость
**

Группа: Свой
Сообщений: 96
Регистрация: 16-11-05
Из: г.Екатеринбург
Пользователь №: 10 930



Я понял все с таймером(ШИМом). Спасибо.
Теперь напишите подробнее, как сконфигурироваться от внутреннего HSI.
Как сконфигурировать внутренние частоты.
Заранее спасибо. То есть, интересует процедура RCC_Configuration().
В примерах что-то не нашел конфигурацию от внутреннего источника.
Go to the top of the page
 
+Quote Post
Aleksandr Barano...
сообщение Aug 17 2010, 20:15
Сообщение #24


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118




А это - не то, что требуется?
Код
/*******************************************************************************
* Function Name  : RCC_SYSCLKConfig
* Description    : Configures the system clock (SYSCLK).
* Input          : - RCC_SYSCLKSource: specifies the clock source used as system
*                    clock. This parameter can be one of the following values:
*                       - RCC_SYSCLKSource_HSI: HSI selected as system clock
*                       - RCC_SYSCLKSource_HSE: HSE selected as system clock
*                       - RCC_SYSCLKSource_PLLCLK: PLL selected as system clock
* Output         : None
* Return         : None
*******************************************************************************/
void RCC_SYSCLKConfig(u32 RCC_SYSCLKSource)
{
  u32 tmpreg = 0;

  /* Check the parameters */
  assert(IS_RCC_SYSCLK_SOURCE(RCC_SYSCLKSource));

  tmpreg = RCC->CFGR;

  /* Clear SW[1:0] bits */
  tmpreg &= CFGR_SW_Mask;

  /* Set SW[1:0] bits according to RCC_SYSCLKSource value */
  tmpreg |= RCC_SYSCLKSource;

  /* Store the new value */
  RCC->CFGR = tmpreg;
}


--------------------
ASB
Go to the top of the page
 
+Quote Post
Aleksandr Barano...
сообщение Aug 18 2010, 02:34
Сообщение #25


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118



Цитата(Aleksandr Baranov @ Aug 17 2010, 16:15) *
А это - не то, что требуется?
Код
/*******************************************************************************
* Function Name  : RCC_SYSCLKConfig
* Description    : Configures the system clock (SYSCLK).
* Input          : - RCC_SYSCLKSource: specifies the clock source used as system
*                    clock. This parameter can be one of the following values:
*                       - RCC_SYSCLKSource_HSI: HSI selected as system clock
*                       - RCC_SYSCLKSource_HSE: HSE selected as system clock
*                       - RCC_SYSCLKSource_PLLCLK: PLL selected as system clock
* Output         : None
* Return         : None
*******************************************************************************/
void RCC_SYSCLKConfig(u32 RCC_SYSCLKSource)
{
  u32 tmpreg = 0;

  /* Check the parameters */
  assert(IS_RCC_SYSCLK_SOURCE(RCC_SYSCLKSource));

  tmpreg = RCC->CFGR;

  /* Clear SW[1:0] bits */
  tmpreg &= CFGR_SW_Mask;

  /* Set SW[1:0] bits according to RCC_SYSCLKSource value */
  tmpreg |= RCC_SYSCLKSource;

  /* Store the new value */
  RCC->CFGR = tmpreg;
}

И еще кусок из void RCC_DeInit(void):
Код
/* Set HSION bit */
  RCC->CR |= (u32)0x00000001;

  /* Reset SW[1:0], HPRE[3:0], PPRE1[2:0], PPRE2[2:0], ADCPRE[1:0] and MCO[2:0] bits*/
  RCC->CFGR &= 0xF8FF0000;
  
  /* Reset HSEON, CSSON and PLLON bits */
  RCC->CR &= 0xFEF6FFFF;


--------------------
ASB
Go to the top of the page
 
+Quote Post
AndreyKeil
сообщение Aug 18 2010, 03:35
Сообщение #26


Частый гость
**

Группа: Свой
Сообщений: 96
Регистрация: 16-11-05
Из: г.Екатеринбург
Пользователь №: 10 930



Сегодня узнал интересную особенность. Я отлаживаю программу в режиме симуляции. Я загружаю код в Ride7 и хочу увидеть там ШИМ в пошаговом режиме, а его там нет. Так вот мне сказали, среда Ride7 не покажет ШИМ.Так что смотреть надо на реальном контроллере. Может быть у меня уже получался ШИМ.
Go to the top of the page
 
+Quote Post
AndreyKeil
сообщение Aug 18 2010, 07:45
Сообщение #27


Частый гость
**

Группа: Свой
Сообщений: 96
Регистрация: 16-11-05
Из: г.Екатеринбург
Пользователь №: 10 930



Решил оставить в покое ШИМ и выдать простой меандр на ту же ножку PB7. Сконфигурил ее на выход и вот что получилось:
..и все равно не работает laughing.gif
Прикрепленные файлы
Прикрепленный файл  Aok_mn.txt ( 7.43 килобайт ) Кол-во скачиваний: 97
 
Go to the top of the page
 
+Quote Post
AndreyKeil
сообщение Aug 18 2010, 18:15
Сообщение #28


Частый гость
**

Группа: Свой
Сообщений: 96
Регистрация: 16-11-05
Из: г.Екатеринбург
Пользователь №: 10 930



Нашел ошибку rolleyes.gif
У меня была строчка:
GPIOB->CRL|=0xB0000000; //выход 50МГц, общее назначение вывода
После сброса в регистре GPIOB_CRL не нулевое значение,поэтому я получал не то что хотел.
Правильное значение:
GPIOB->CRL=0xB0000000; //выход 50МГц, альтернативная функция push-pull.
После этой строчки ШИМ появился.
Большое спасибо всем ответившим за помощь!
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 19 2010, 05:04
Сообщение #29


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Ура! smile.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 04:21
Рейтинг@Mail.ru


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