Код
#include "stm32f10x.h"
void InitAll(void)
{
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN | RCC_APB2ENR_AFIOEN; // тактировать порт ц и задать альтернативные функции ему.
GPIOC->CRH |= GPIO_CRH_MODE8; // ножка pc8 на выход
GPIOC->CRH &=~GPIO_CRH_CNF8; // альтернативный с подтяжкой
AFIO->MAPR |= AFIO_MAPR_TIM3_REMAP; // ремапинг таймера 3 на порты С
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; // такты на третий таймер
TIM3->CNT = 999; // предел счета
TIM3->PSC = 0; // предделитель
TIM3->CR1 &= TIM_CR1_DIR; // прямое направление счета
TIM3->CCMR2 |=~TIM_CCMR2_CC3S; // третий канал счетчика на выход
TIM3->CCMR2 |= TIM_CCMR2_OC3PE; // output compare mode 3 preload enable
TIM3->CCR1 = 500; // загружаем туды число
TIM3->CR1 |= TIM_CR1_CEN; // врубаем счет
}
int main(void)
{
InitAll();
while(1)
{
;
}
}
void InitAll(void)
{
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN | RCC_APB2ENR_AFIOEN; // тактировать порт ц и задать альтернативные функции ему.
GPIOC->CRH |= GPIO_CRH_MODE8; // ножка pc8 на выход
GPIOC->CRH &=~GPIO_CRH_CNF8; // альтернативный с подтяжкой
AFIO->MAPR |= AFIO_MAPR_TIM3_REMAP; // ремапинг таймера 3 на порты С
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; // такты на третий таймер
TIM3->CNT = 999; // предел счета
TIM3->PSC = 0; // предделитель
TIM3->CR1 &= TIM_CR1_DIR; // прямое направление счета
TIM3->CCMR2 |=~TIM_CCMR2_CC3S; // третий канал счетчика на выход
TIM3->CCMR2 |= TIM_CCMR2_OC3PE; // output compare mode 3 preload enable
TIM3->CCR1 = 500; // загружаем туды число
TIM3->CR1 |= TIM_CR1_CEN; // врубаем счет
}
int main(void)
{
InitAll();
while(1)
{
;
}
}
А, да. Keil 4.14. На пример %keil%/ARM/Examples/ST/STM32F10xFWLib\Examples\TIM\PWM_Output смотрел. Пытался сделать тоже, что и там. Мой код компилиться, а их нет, вываливая тонну ошибок.
Где я протупил?)