Ahoj, mám takový kód:
#include "sys/types.h"
#include "stm32f10x.h"
#include "main.h"
int main(void){ // Main function. Called by the startup code.
static uint8_t i = 0;
SysTick_Config(SystemCoreClock/200); //10-100ms,100-10ms,1000-1ms,10000-100us,100000-10us,
init_mcu();
for(;;){
i = ~i;
if(i == 0){GPIOC->BSRR = GPIO_BSRR_BS8;}
else{GPIOC->BSRR = GPIO_BSRR_BR8;}
}
}
__INLINE static void init_mcu(void){
RCC->APB2ENR = 0 // Most of the peripherals are connected to APB2. Turn on the clocks for the interesting peripherals
| RCC_APB2ENR_IOPCEN; // I/O port C clock enable
GPIOC->CRH = 0 // SET GPIOC as Output
| GPIO_CRH_MODE8_0 // Max output speed 10MHz - LED0
| GPIO_CRH_MODE9_0; // Max output speed 10MHz - LED1
}
void SysTick_Handler(void){
static uint8_t j = 0;
j = ~j;
if(j == 0){GPIOC->BSRR = GPIO_BSRR_BR9;}
else{GPIOC->BSRR = GPIO_BSRR_BS9;}
}
Zjistil jsem, že pokud je funkce SysTick_Config(SystemCoreClock/200) zakomentována, tak mi pinožka osciloskopu na pinu GPIOC8 kmitá na frekvenci cca 1,5Mhz. Pokud jí ale zavolám tak se tato frekvence změní na 1,7Mhz.
Nemáte někdo vysvětlení pro toto chování? Mě to totiž hlava ani po poradě s datasheetem nebere. Dík.
administrator: přejmenováno z "STM32 a SysTick"