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

 
 
 
Reply to this topicStart new topic
> STM32 и TIM3, Input capture mode.
Jenya7
сообщение Jun 23 2014, 06:08
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Этот код прекрасно работает на STM32F103RB (64 PIN).
CODE
void Tim3Init(void) //ir signal capture
{
//PA6 -TIM3_CH1,PB0-TIM3_CH3,PB1-TIM3_CH4

NVIC_SetPriority(TIM3_IRQn, 1);
NVIC_EnableIRQ(TIM3_IRQn);

RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;
//INPUT TI1
//Active input selection. "01" in CC1S -> tie TIM3_CCR1 to input TI1
TIM3->CCMR1 |= TIM_CCMR1_CC1S_0;
//filter - 4 ticks. IC1F = 0010.
TIM3->CCMR1 |= TIM_CCMR1_IC1F_1;
//falling edge triggers capture
TIM3->CCER |= TIM_CCER_CC1P;
//input signal prescaler off
TIM3->CCMR1 &= ~TIM_CCMR1_IC1PSC;
//Enable capture from the counter into the capture register
TIM3->CCER |= TIM_CCER_CC1E;
//capture/compare chan 1 interrupt enable
TIM3->DIER |= TIM_DIER_CC1IE;

TIM3->PSC = 72 - 1; //1us
TIM3->ARR = 0xFFFE; //reload

TIM3->CR1 |= TIM_CR1_CEN;
}


На 100 пиновом камне STM32F103VB этот код не работает, хотя та же нога посажена на PA6 – TIM3 CH1.
Пишу на IAR. В чем может быть проблема?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jun 23 2014, 06:59
Сообщение #2


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

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



RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_AFIOEN; не забыли?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jun 23 2014, 07:15
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(AHTOXA @ Jun 23 2014, 11:59) *
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_AFIOEN; не забыли?


Не забыл. У меня для этого есть функция.

Код
void PeriphClockInit(void)
{
  RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;   //GPIO portA clocking
  RCC->APB2ENR |= RCC_APB2ENR_IOPBEN;   //GPIO portB clocking
  RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;   //GPIO portC clocking
  RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;   //GPIO alternate functions clocking
}
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 23 2014, 08:48
Сообщение #4


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Посмотрите спецификацию (datasheet), таблицу определения ножек, примечание 8. Может, оно?
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jun 23 2014, 09:49
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(ViKo @ Jun 23 2014, 13:48) *
Посмотрите спецификацию (datasheet), таблицу определения ножек, примечание 8. Может, оно?


честно говоря там не совсем понятно:
Код
PA6 - SPI1_MISO(9)/ADC12_IN6/TIM3_CH1(9)
(9) This alternate function can be remapped by software to some other port pins (if available on the used package). For more
details, refer to the Alternate function I/O and debug configuration section in the STM32F10xxx reference manual, available
from the STMicroelectronics website: www.st.com.


по дефолту, как я понимаю выбирается опция TIM3_CH1, так как я никакой ремапинг не делаю на STM32F103RB. в любом случае я пробовал играться битами ремапинга для TIM3 на STM32F103VB - ничего не получилось. может другие алтернативные функции (SPI1_MISO(9)/ADC12_IN6) на этом пине мешают?
Go to the top of the page
 
+Quote Post

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

 


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


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