avrei qualche perplessità riguardo il funzionamento del systick, la scheda che uso è la stm32 dyscovery con il micro STM32F100RB.
- Codice: Seleziona tutto
#include <stm32f10x.h>
void Delay(uint32_t nTime);
int main (){
// Configure SysTick Timer
if (SysTick_Config(SystemCoreClock / 1000))
while (1);
}
// Timer code
static __IO uint32_t TimingDelay;
void Delay(uint32_t nTime){
TimingDelay = nTime;
while(TimingDelay != 0);
}
void SysTick_Handler(void){
if (TimingDelay != 0x00)
TimingDelay --;
}
Questo estratto di codice dovrebbe far si che la funzione Delay(1) generi un tempo di 1 ms.
In particolare vorrei sapere cosa fa questo: (ad es. chi è SysTick_Config e da dove viene)
- Codice: Seleziona tutto
// Configure SysTick Timer
if (SysTick_Config(SystemCoreClock / 1000))
while (1);
Mentre questo dovrebbe aspettare semplicemente che la variabile TimingDelay arrivi a 0
- Codice: Seleziona tutto
void Delay(uint32_t nTime){
TimingDelay = nTime;
while(TimingDelay != 0);
}
Invece questa dovrebbe essere l'interruzione chiamata dal systick che ad ogni giro decrementa la varibile di prima (TimingDelay)
- Codice: Seleziona tutto
void SysTick_Handler(void){
if (TimingDelay != 0x00)
TimingDelay --;
}
Attendo delucidazioni sulla questione, grazie in anticipo.

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)

