Hur många av er här kör STM32?
Re: Hur många av er här kör STM32?
Du vill ha ut 1 Hz, nåväl, om din processor har inbyggd RTC så använder du den, till exempel.
Du kan också använda en kombination av HW-timers och SW-räknare.
Du kan också använda en kombination av HW-timers och SW-räknare.
Re: Hur många av er här kör STM32?
TomasL skrev:Finns säkert ett tiotal RTOS du kan köra på CubeMX
FreeRTOS använder en hårdvarutimer för eget bruk.
Resterande timers kan du använda fritt, till vad som helst.
Dock måste du skriva interruptrutiner för de timers du använder, om du vill att de alltid skall hanteras.
Du får helt enkelt läsa på när det gäller FreeRTOS, finns böcker att köpa, vilket jag vet är helt nödvändigt, om man skall få något vettigt gjort.
Jag löste detta igenom att testa mig fram. Kravet var bara att ha en period på 10 sekunder ungefär. Det är inte så noga. Men ungefär 10 sekunder.TomasL skrev:Du vill ha ut 1 Hz, nåväl, om din processor har inbyggd RTC så använder du den, till exempel.
Du kan också använda en kombination av HW-timers och SW-räknare.
Jag trodde jag kunde räkna mig fram till detta, men icke.
Jag tycker det är enklare med hårdvarutimer. För jag brukar använda Output Compare Preload vid PWM. Mest bara för att man ska kunna ändra hur lång tid det ska vara hög signal ut och låg signal ut, under körningen.
Re: Hur många av er här kör STM32?
Jag vet Är rätt grön när det kommer till timers. Jag kan sätta upp en, men trimma in den igenom att göra en enkel överslagsräkning, kan jag inte.
Så nu är det på en höft.
Så nu är det på en höft.
Re: Hur många av er här kör STM32?
1 Hz, dvs räkna 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 och sedan börjar den om. För varje sekund.
Re: Hur många av er här kör STM32?
En räknare med 1 Hz frekvens ger en signal varje sekund men slutar inte efter 10 s.
Re: Hur många av er här kör STM32?
Detta brukar iaf. jag att åstadkomma med en timerinterrupt på lämplig hastighet och sedan köra (i detta fall):
TIMER_ISR:
if(++Index_Variable >= 10) Index_Variable = 0;
TIMER_ISR:
if(++Index_Variable >= 10) Index_Variable = 0;
-
- Inlägg: 1397
- Blev medlem: 29 januari 2011, 21:06:30
- Ort: Lapplandet
Re: Hur många av er här kör STM32?
Du verkar vara förvirrad över vilken kod du använder.DanielM skrev:Öh? Ja?
Är inte detta uppenbart när det handlar om CubeMX?
CMSIS är inget OS. Det har ingenting alls med FreeRTOS att göra.
Det är en standardiserad HAL för Cortex som, åtminstone i teorin, gör att du ska kunna köra samma kod på valfri cortex-processor.
Du har inte skrivit exakt vad du vill göra med timern.. Det låter som att du vill styra en pwm-pinne men från erfarenhet av dina andra trådar kanske det egentligen är något helt annat.
För PWM behöver du inte alls blanda in FreeRTOS. Gör allting från en normal interrupt-rutin.
Om du istället vill köra en rtos-task var 10:e sekund får du använda t.ex. xSemaphoreGiveFromISR. Sidan har ett ganska simpelt exempel på hur man kan göra.
Re: Hur många av er här kör STM32?
Om du vill använda hårdvarutimer så är det bara att konfigurera så att f_clk/(prescaler + 1)/(autoreload + 1) = 1 Hz.
Välj tex prescaler till 8399 och autoreload (counter period) till 9999. Aktivera interrupt i NVIC för timern i inställningarna i CubeMX.
Fixa en callback som ska anropas:
HAL_TIM_PeriodElapsedCallback
Starta med:
HAL_TIM_Base_Start_IT
Din callback anropas nu med 1Hz.
Välj tex prescaler till 8399 och autoreload (counter period) till 9999. Aktivera interrupt i NVIC för timern i inställningarna i CubeMX.
Fixa en callback som ska anropas:
HAL_TIM_PeriodElapsedCallback
Starta med:
HAL_TIM_Base_Start_IT
Din callback anropas nu med 1Hz.
Re: Hur många av er här kör STM32?
Det där ska jag komma ihåg. Nu har min LCD gått sönder och jag väntar på en ny, så jag återkommer då!