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

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


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

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



Второй день маюсь. Не могу запустить ШИМ на ноге PB7. Что я делаю не так? Подскажите ,плиз! 1111493779.gif
Прикрепленные файлы
Прикрепленный файл  main.txt ( 1.33 килобайт ) Кол-во скачиваний: 77
 
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 16 2010, 14:34
Сообщение #2


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

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



А включить таймер:
Код
    RCC->APB1ENR |= RCC_APB1ENR_TIM4EN;

или
Код
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE)...

?


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


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

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



Включил теперь...
-не помогает.
RCC->APB2ENR|=1; - альтернативные фнкции портов включил и тоже ничего...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 17 2010, 04:55
Сообщение #4


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

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



Вот мой рабочий код (таймер 2, канал 2):
Код
#define ARR_VAL    36
#define CCR2_VAL    ARR_VAL / 2

    // 1. set up timer
    TIM2->CR1 = TIM_CR1_ARPE;    // count up, no divisor, auto reload
    TIM2->ARR = ARR_VAL;        // timer period
    TIM2->PSC = 0;                // prescaler
    TIM2->EGR = TIM_EGR_UG;        // generate an update event to reload the prescaler value
    TIM2->CR2 = 0;

    // 2. set up ccr2
    TIM2->CCER &= ~(TIM_CCER_CC2E | TIM_CCER_CC2P);    // disable cc2 output, clear polarity
    TIM2->CCR2 = CCR2_VAL;                        // cc2 period
    TIM2->CCMR1 = TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2PE; // PWM 1 (0x6000), enable preload;
    TIM2->CCER |= TIM_CCER_CC2E;    // enable cc2 output

    TIM2->CR1 |= TIM_CR1_CEN;


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


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

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



Сделал как ты написал, Антоха. С поправкой на таймер 4 - все равно не работает.
А в режиме симуляции таймер должен вести отсчеты?
И еще вопрос: на ножке порта в симуляторе я увижу ШИМ?
Go to the top of the page
 
+Quote Post
adnega
сообщение Aug 17 2010, 06:46
Сообщение #6


Гуру
******

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



А в регистре RCC_APB2ENR бит AFIO_EN установлен?
Go to the top of the page
 
+Quote Post
AndreyKeil
сообщение Aug 17 2010, 06:53
Сообщение #7


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

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



Цитата(adnega @ Aug 17 2010, 12:46) *
А в регистре RCC_APB2ENR бит AFIO_EN установлен?

да
Go to the top of the page
 
+Quote Post
adnega
сообщение Aug 17 2010, 07:39
Сообщение #8


Гуру
******

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



Код
#include    "stm32f10x_map.h"

#define    RCC_APB1ENR_TIM4EN        ((u32)(2))
#define    RCC_APB2ENR_IOPAEN        ((u32)(2))
#define    RCC_APB2ENR_IOPBEN        ((u32)(3))
#define    RCC_APB2ENR_AFIOEN        ((u32)(0))
#define    RCC_CFGR_ADCPRE            ((u32)(14))
#define    RCC_CFGR_PPRE1            ((u32)(8))
#define    AF_PP_50                    ((u32)(11))
#define    CFG_PIN7                    ((u32)(28))
#define    TIM_CCER_CC1E            ((u32)(0))
#define    TIM_CCER_CC2E            ((u32)(4))
#define    OC_MODE_PWM1            ((u32)(6))
#define    TIM_CCMR1_OC1M            ((u32)(4))
#define    TIM_CCMR1_OC2M            ((u32)(12))
#define    TIM_CR1_CEN                ((u32)(0))
#define    TIM_CR1_ARPE                ((u32)(7))

int    main()
{
    RCC->AHBENR=0;
    RCC->APB1ENR=
        (1<<RCC_APB1ENR_TIM4EN);
    RCC->APB2ENR=
        (1<<RCC_APB2ENR_IOPAEN)
        |(1<<RCC_APB2ENR_IOPBEN)
        |(1<<RCC_APB2ENR_AFIOEN);
    RCC->CFGR=
        (3<<RCC_CFGR_ADCPRE)
        |(4<<RCC_CFGR_PPRE1);

    GPIOB->CRL=(AF_PP_50<<CFG_PIN7);    // T4_C2


    TIM4->ARR=(12000000/75000)-1;        // запись периода
    TIM4->PSC=0;                        // запись базы
    TIM4->CCR1=10;                    // длительность импульса DIM0
    TIM4->CCR2=20;                    // длительность импульса DIM1
    TIM4->CCER=
        (1<<TIM_CCER_CC1E)
        |(1<<TIM_CCER_CC2E);            // разрешить первый и второй выходы сравнения
    TIM4->CCMR1=
        (OC_MODE_PWM1<<TIM_CCMR1_OC1M)    // режим ШИМ для первого канала
        |(OC_MODE_PWM1<<TIM_CCMR1_OC2M); // режим ШИМ для второго канала
    TIM4->CNT=0;
    TIM4->CR2=0;
    TIM4->CR1=
        (1<<TIM_CR1_CEN)                 // разрешить счет
        |(1<<TIM_CR1_ARPE);            // разрешить автоматическую перезагрузку

    while(1);
}


В Keil даже симулируется...

АХТУНГ!
А есть ли четвертый таймер у 103T8?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 17 2010, 07:49
Сообщение #9


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

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



Нашёл ошибку:
Код
    GPIOB->CRL=0x30000000;//альтерн.функция push-pull,PB7-50МГц,

0x3 - это просто output, а надо 0xB - альтернативный output.


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


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

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



Цитата(AHTOXA @ Aug 17 2010, 13:49) *
Нашёл ошибку:
Код
    GPIOB->CRL=0x30000000;//альтерн.функция push-pull,PB7-50МГц,

0x3 - это просто output, а надо 0xB - альтернативный output.

это я уже исправил. Все равно не помогает...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 17 2010, 08:20
Сообщение #11


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

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



Цитата(adnega @ Aug 17 2010, 13:39) *
А есть ли четвертый таймер у 103T8?

Вроде есть.

Цитата(AndreyKeil @ Aug 17 2010, 14:03) *
это я уже исправил. Все равно не помогает...


В симуляторе или в реальном железе?


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


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

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



Цитата(AHTOXA @ Aug 17 2010, 14:20) *
Вроде есть.



В симуляторе или в реальном железе?

Не работает и в симуляторе, и в железе.

Таймер4 есть.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 17 2010, 08:55
Сообщение #13


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

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



Покажите полный код, что есть сейчас.


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


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

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



Цитата(AHTOXA @ Aug 17 2010, 14:55) *
Покажите полный код, что есть сейчас.

Вот
Прикрепленные файлы
Прикрепленный файл  mn.txt ( 9.57 килобайт ) Кол-во скачиваний: 133
 
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 17 2010, 09:14
Сообщение #15


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

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



А куда делась строка
Код
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

?


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

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

 


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


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