|
STM32F103T8, Ride7, ШИМ на PB7 |
|
|
|
Aug 16 2010, 13:42
|
Частый гость
 
Группа: Свой
Сообщений: 96
Регистрация: 16-11-05
Из: г.Екатеринбург
Пользователь №: 10 930

|
Второй день маюсь. Не могу запустить ШИМ на ноге PB7. Что я делаю не так? Подскажите ,плиз!
Прикрепленные файлы
main.txt ( 1.33 килобайт )
Кол-во скачиваний: 77
|
|
|
|
|
Aug 16 2010, 14:34
|

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

|
А включить таймер: Код RCC->APB1ENR |= RCC_APB1ENR_TIM4EN; или Код RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE)... ?
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Aug 17 2010, 06:53
|
Частый гость
 
Группа: Свой
Сообщений: 96
Регистрация: 16-11-05
Из: г.Екатеринбург
Пользователь №: 10 930

|
Цитата(adnega @ Aug 17 2010, 12:46)  А в регистре RCC_APB2ENR бит AFIO_EN установлен? да
|
|
|
|
|
Aug 17 2010, 07:39
|
Гуру
     
Группа: Свой
Сообщений: 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?
|
|
|
|
|
Aug 17 2010, 08:03
|
Частый гость
 
Группа: Свой
Сообщений: 96
Регистрация: 16-11-05
Из: г.Екатеринбург
Пользователь №: 10 930

|
Цитата(AHTOXA @ Aug 17 2010, 13:49)  Нашёл ошибку: Код GPIOB->CRL=0x30000000;//альтерн.функция push-pull,PB7-50МГц, 0x3 - это просто output, а надо 0xB - альтернативный output. это я уже исправил. Все равно не помогает...
|
|
|
|
|
Aug 17 2010, 08:20
|

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

|
Цитата(adnega @ Aug 17 2010, 13:39)  А есть ли четвертый таймер у 103T8? Вроде есть. Цитата(AndreyKeil @ Aug 17 2010, 14:03)  это я уже исправил. Все равно не помогает... В симуляторе или в реальном железе?
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Aug 17 2010, 08:42
|
Частый гость
 
Группа: Свой
Сообщений: 96
Регистрация: 16-11-05
Из: г.Екатеринбург
Пользователь №: 10 930

|
Цитата(AHTOXA @ Aug 17 2010, 14:20)  Вроде есть.
В симуляторе или в реальном железе? Не работает и в симуляторе, и в железе. Таймер4 есть.
|
|
|
|
|
Aug 17 2010, 09:03
|
Частый гость
 
Группа: Свой
Сообщений: 96
Регистрация: 16-11-05
Из: г.Екатеринбург
Пользователь №: 10 930

|
Цитата(AHTOXA @ Aug 17 2010, 14:55)  Покажите полный код, что есть сейчас. Вот
Прикрепленные файлы
mn.txt ( 9.57 килобайт )
Кол-во скачиваний: 133
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|