oggi per la prima volta ho provato ad utilizzare il tim3 per generare un segnale che vada in overflow ogni 1s. Il problema è che benchè il timer parti senza problemi non finisco mai nell'interrupt.
Il codice è il seguente:
- Codice: Seleziona tutto
#include <stm32f4xx.h>
void Clock_Set(void);
void Tim3_Init(void);
void GPIO_Init(void);
void TIM3_IRQHandler(void);
uint8_t gbl = 0;
int main(void)
{
/*imposto il clock a 168MHz*/
Clock_Set();
/*inizializzo il tim3*/
Tim3_Init();
/*gpio*/
GPIO_Init();
TIM3 ->PSC = 10000;
TIM3 ->ARR = 16800;
TIM3 ->CR1 |= TIM_CR1_CEN;
while(1)
{
if(gbl)
{
GPIOD ->BSRRL = 0x8000;
}
else
{
GPIOD ->BSRRH = 0x8000;
}
}
}
void TIM3_IRQHandler()
{
TIM3 ->SR &= ~TIM_SR_UIF;
gbl++;
if(gbl == 2) gbl = 0;
}
void GPIO_Init()
{
RCC ->AHB1RSTR |= RCC_AHB1RSTR_GPIODRST;
RCC ->AHB1RSTR = 0x0000;
RCC ->AHB1ENR |= RCC_AHB1ENR_GPIODEN;
GPIOD ->MODER |= GPIO_MODER_MODER15_0;
GPIOD ->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR15_1;
GPIOD ->OTYPER = 0x0000;
GPIOD ->PUPDR = 0x0000;
}
void Clock_Set()
{
/*imposto 5WS per i 168MHz*/
FLASH ->ACR |= FLASH_ACR_LATENCY_5WS;
/*azzero il registro per il clock*/
RCC ->CR &= 0x0000;
/*HSE e PLL*/
RCC ->CR |= RCC_CR_HSEON | RCC_CR_PLLON;
/*reset CFGR*/
RCC ->PLLCFGR &= 0x0000;
/*imposto PLL_M 8, PLL_N 336, PLL_P 2*/
RCC ->PLLCFGR |= RCC_PLLCFGR_PLLM_3 | 0x0150 | RCC_PLLCFGR_PLLSRC_HSE;
/*seleziono PLL HSE*/
RCC ->CFGR |= RCC_CFGR_SW_PLL;
}
void Tim3_Init()
{
/*reset TIM3*/
RCC ->APB1RSTR |= RCC_APB1RSTR_TIM3RST;
RCC ->APB1RSTR = 0x0000;
/*clock enabled*/
RCC ->APB1ENR |= RCC_APB1ENR_TIM3EN;
/*auto reload, overflow, upcounter, not enabled*/
TIM3 ->CR1 |= TIM_CR1_ARPE | TIM_CR1_URS;
/*prescaler*/
TIM3 ->PSC = 0x0000;
/*arr*/
TIM3 ->ARR = 0xFFFF;
/*interrupt*/
NVIC_EnableIRQ(TIM3_IRQn);
NVIC_SetPriority(TIM3_IRQn,0x0F);
}
Qualcuno può spiegarmi dove sbaglio? Grazie per la collaborazione :)

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)
