Hallo, meine Delay-Routine ist zu schnell. Bei einer Eingabe von 10 Sekunden mit delay_us(10000000) ist schon nach 5 Sekunden schluss.
1 | void delay_us(uint32_t time_us) |
2 | {
|
3 | SysTick->LOAD = (72 * time_us)-1; |
4 | SysTick->VAL = 0; // Load the SysTick Counter Value |
5 | SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; // Enable SysTick Timer |
6 | |
7 | do
|
8 | {
|
9 | } while ((SysTick->CTRL & SysTick_CTRL_COUNTFLAG)==0); |
10 | SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; // Disable SysTick Timer |
11 | SysTick->VAL = 0; // Load the SysTick Counter Value |
12 | }
|
Aufruf erfolgt mit:
1 | USART1_SendString("start_delay\n"); |
2 | delay_us(10000000); //10 Sekunden = 10000ms=1000000µs |
3 | USART1_SendString("end_delay\n"); |
STM32F107RC mit 72Mhz. Kann vielleicht jemand helfen?