Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Альтернативная функция выхода TIM1 STM32F303
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
domowoj
Здравствуйте форумчане.

Не могу понять, почему не получается подключить выход
TIM1_CH1N на PA11, причем на выход PA7 тот же канал таймера работает.
Что-то делаю не так...?
Кусок кода инициализации:
Код
    RCC->AHBENR |= RCC_AHBENR_GPIOAEN;    
    RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN;
    RCC->APB2ENR |= RCC_APB2ENR_TIM1EN;

        GPIOA->MODER |= GPIO_MODER_MODER11_1;    //PA11 - output AF
        GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR11;    //PA11 - 40MHz
        //GPIOA->AFR[0] |= 0x060000000;                //PA7 - AF6 (TIM1_CH1N)    
        GPIOA->AFR[1] |= 0x06000;                //PA11 - AF6 (TIM1_CH1N)



1113
а что за корпус?
domowoj
STM32F303VCT6
100 ног.
KnightIgor
Цитата(domowoj @ Dec 5 2014, 20:40) *
Здравствуйте форумчане.

Не могу понять, почему не получается подключить выход
TIM1_CH1N на PA11, причем на выход PA7 тот же канал таймера работает.
Что-то делаю не так...?
Кусок кода инициализации:
Код
    RCC->AHBENR |= RCC_AHBENR_GPIOAEN;    
    RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN;
    RCC->APB2ENR |= RCC_APB2ENR_TIM1EN;

        GPIOA->MODER |= GPIO_MODER_MODER11_1;    //PA11 - output AF
        GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR11;    //PA11 - 40MHz
        //GPIOA->AFR[0] |= 0x060000000;                //PA7 - AF6 (TIM1_CH1N)    
        GPIOA->AFR[1] |= 0x06000;                //PA11 - AF6 (TIM1_CH1N)

А почему в первом случае 0x060000000, а во втором 0x06000?
1113
AFR[1]
вот это верно?
domowoj
Цитата(KnightIgor @ Dec 6 2014, 02:14) *
А почему в первом случае 0x060000000, а во втором 0x06000?
К разным выводам подключаю CH1N.
Цитата
AFR[1]
вот это верно?
наверно
adnega
Опять эти опасные "|="...
А если просто через "=" попробовать?
domowoj
Цитата(adnega @ Dec 6 2014, 03:01) *
Опять эти опасные "|="...
А если просто через "=" попробовать?
Пробовал, не помогло.
adnega
А в чем заключается невозможность подключения?
Отсутствие ШИМ на выходе? Постоянный уровень? ШИМ от других таймеров на PA11 выводится? USB не включали? GPIO на данной ноге работает?
Tanya
Цитата(domowoj @ Dec 6 2014, 00:08) *
Пробовал, не помогло.

Попросить CUBE все сделать не пробовали?
Сергей Борщ
А может просто снаружи замыкание мешает пошевелить ногой?
domowoj
С CUBE до конца еще разбираться надо,
но за наводку спасибо.
Хотя, по моему , я что-то делаю не так,
потому что другие счетчики(TIM2,3,4) не хотят подключаться
к портам с номером выше 7,
т.е. когда применяю конструкцию: "GPIOх->AFR[0] |=" - все работает,

если: "GPIOх->AFR[1] |=" - не работает.

Вот кусок скриншота из отладчика
1113
и что не работает? код ведь одинаковый
Цитата(domowoj @ Dec 6 2014, 11:11) *
С CUBE до конца еще разбираться надо
могу сгенерить самый простой проект с этим выводом. какая у вас среда?
domowoj
Цитата(1113 @ Dec 6 2014, 14:29) *
и что не работает? код ведь одинаковыймогу сгенерить самый простой проект с этим выводом. какая у вас среда?

MDK 4.74
отладочная плата STM32F3DISCOVERY,
мне нужно подключить канал CH1N TIM1
к выходу PA11.

Попробую сейчас просто подрыгать ножкой.
1113
почту ещё свою дайте

на этой плате на PA11 - USB
domowoj
Цитата(1113 @ Dec 6 2014, 14:47) *
на этой плате на PA11 - USB

Может поэтому и не работает?
1113
Цитата(domowoj @ Dec 6 2014, 12:03) *
Может поэтому и не работает?
просто через резистор 22 Ом подключено к разъёму USB. если не подключать USB - влиять не должно. дайте почту...


вот, всё стандартно:
Код
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
{

  GPIO_InitTypeDef GPIO_InitStruct;
  if(htim_base->Instance==TIM1)
  {
  /* USER CODE BEGIN TIM1_MspInit 0 */

  /* USER CODE END TIM1_MspInit 0 */
    /* Peripheral clock enable */
    __TIM1_CLK_ENABLE();
  
    /**TIM1 GPIO Configuration    
    PA11     ------> TIM1_CH1N
    */
    GPIO_InitStruct.Pin = GPIO_PIN_11;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
    GPIO_InitStruct.Alternate = GPIO_AF6_TIM1;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  /* USER CODE BEGIN TIM1_MspInit 1 */

  /* USER CODE END TIM1_MspInit 1 */
  }

}
domowoj
Спасибо.
У меня то же самое почти.
Вот начало этой строки не совсем понятно.
Код
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
1113
и что не понятно? заполняется структура и передаётся в функцию HAL_GPIO_Init. при этом указывается что заполнять надо порт GPIOA.
изучите эту процедуру и поймёте что вы настраиваете не так.

проект заработал? есть генерация, или у вас pin`ы пробило?
domowoj
Ларчик просто открывался!
На плате вывод процессора PA11 на внешний разъем-гребёнку
идет через перемычку SB22 которая не установлена.
Как говорится - учите матчасть!
scifi
Семён Семёныч!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.