Ребята, объясните, пожалуйста, мне тупому: откуда берётся тактирование таймера systick у STM32F407 (плата Discovery)?
Вот код:
Код: Выделить всё
#include "stm32f4xx.h"
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"
#define LED GPIO_Pin_14
#define TEST GPIO_Pin_7
void initGPIO(void)
{
GPIO_InitTypeDef port;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOC, ENABLE);
port.GPIO_Pin = LED;
port.GPIO_Mode = GPIO_Mode_OUT;
port.GPIO_OType = GPIO_OType_PP;
port.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &port);
port.GPIO_Pin = TEST;
GPIO_Init(GPIOC, &port);
}
void SysTick_Handler(void)
{
static uint32_t count = 0;
count++;
if (count == 200) {
GPIO_ToggleBits(GPIOD, LED);
count = 0;
}
GPIO_ToggleBits(GPIOC, TEST);
}
int main()
{
if(SysTick_Config(1000000))
for (;;);
initGPIO();
for (;;);
}
Здесь в обработчике прерывания я мигаю светодиодом на PD14, но на это можно не смотреть - это так, для красоты.
Интересное в последней строке обработчика. Здесь я дёргаю PC7 и вот что получается: Цепляю на PC7 осциллограф и вижу импульсы длительностью 22.5 МСек, то есть частота переключения PC7 равна 44.4 Гц, стало быть, с учётом величины, передаваемой в функцию SysTick_Config, получается, что на вход systick-а поступает частота 44.4 МГц. Вопрос: откуда такая величина берётся? Или я что-то не так понял?



