|
Альтернативная функция выхода TIM1 STM32F303 |
|
|
|
Dec 5 2014, 18:40
|

Профессионал
    
Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486

|
Здравствуйте форумчане. Не могу понять, почему не получается подключить выход 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)
Эскизы прикрепленных изображений
--------------------
И на камнях растут деревья!
|
|
|
|
|
Dec 5 2014, 20:14
|
Знающий
   
Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725

|
Цитата(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?
|
|
|
|
|
Dec 5 2014, 20:34
|

Профессионал
    
Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486

|
Цитата(KnightIgor @ Dec 6 2014, 02:14)  А почему в первом случае 0x060000000, а во втором 0x06000? К разным выводам подключаю CH1N. Цитата AFR[1] вот это верно? наверно
--------------------
И на камнях растут деревья!
|
|
|
|
|
Dec 6 2014, 08:11
|

Профессионал
    
Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486

|
С CUBE до конца еще разбираться надо, но за наводку спасибо. Хотя, по моему , я что-то делаю не так, потому что другие счетчики(TIM2,3,4) не хотят подключаться к портам с номером выше 7, т.е. когда применяю конструкцию: "GPIOх->AFR[ 0] |=" - все работает, если: "GPIOх->AFR[ 1] |=" - не работает. Вот кусок скриншота из отладчика
Эскизы прикрепленных изображений
--------------------
И на камнях растут деревья!
|
|
|
|
|
Dec 6 2014, 08:29
|
Знающий
   
Группа: Свой
Сообщений: 604
Регистрация: 24-02-06
Из: Москва
Пользователь №: 14 658

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

Профессионал
    
Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486

|
Цитата(1113 @ Dec 6 2014, 14:29)  и что не работает? код ведь одинаковыймогу сгенерить самый простой проект с этим выводом. какая у вас среда? MDK 4.74 отладочная плата STM32F3DISCOVERY, мне нужно подключить канал CH1N TIM1 к выходу PA11. Попробую сейчас просто подрыгать ножкой.
--------------------
И на камнях растут деревья!
|
|
|
|
|
Dec 6 2014, 09:09
|
Знающий
   
Группа: Свой
Сообщений: 604
Регистрация: 24-02-06
Из: Москва
Пользователь №: 14 658

|
Цитата(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 */ }
}
|
|
|
|
|
Dec 6 2014, 13:23
|

Профессионал
    
Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486

|
Спасибо. У меня то же самое почти. Вот начало этой строки не совсем понятно. Код HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
--------------------
И на камнях растут деревья!
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|