Jak to zwykle ja, tym razem mam problem z Timerem1. Chciałbym go użyć to odliczania opóźnień mikro sekundowych. I w takiej konfiguracji opóźnienia mam na poziomie 20 mikro sekund.
TAKTOWANIE MAM USTAWIONE NA 8MHz z resztą sami zobaczcie:
Kod: Zaznacz cały
#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)
#define SYSCLK_FREQ_HSE HSE_VALUE
/* #define SYSCLK_FREQ_24MHz 24000000 */
#else
#define SYSCLK_FREQ_HSE HSE_VALUE
/* #define SYSCLK_FREQ_24MHz 24000000 */
/* #define SYSCLK_FREQ_36MHz 36000000 */
/* #define SYSCLK_FREQ_48MHz 48000000 */
/* #define SYSCLK_FREQ_56MHz 56000000 */
/* #define SYSCLK_FREQ_72MHz 72000000 */
#endif
Kod main.c wygląda tak:
Kod: Zaznacz cały
#include "stm32f10x.h"
void delay(uint16_t time);
int main (void)
{
RCC -> APB2ENR = RCC_APB2ENR_IOPBEN | RCC_APB2ENR_TIM1EN;
TIM1 -> PSC = 8;
TIM1 -> ARR = 65535;
TIM1 -> CR1 = TIM_CR1_CEN;
GPIOB -> CRL |= GPIO_CRL_MODE1_1;
GPIOB -> CRL &= ~GPIO_CRL_CNF1_0;
while(1)
{
GPIOB -> ODR |= GPIO_ODR_ODR1;
delay(100);
GPIOB -> ODR &= ~GPIO_ODR_ODR1;
delay(100);
}
}
void delay(uint16_t time)
{
TIM1->CNT = 0;
while (TIM1->CNT<=time);
}