8 microcontroller arduino stm32 milliseconds stm32f0
我想尝试将一些Arduino库移植到stm32.在Arduino中,millis()返回自引导以来的毫秒数.在stm32中是否有等效的功能?我正在使用stm32f0 MCU.
And*_*own 11
SysTick是为此目的提供的ARM核心外设.根据您的需求进行调整:
首先,初始化它
// Initialise SysTick to tick at 1ms by initialising it with SystemCoreClock (Hz)/1000
volatile uint32_t counter = 0;
SysTick_Config(SystemCoreClock / 1000);
Run Code Online (Sandbox Code Playgroud)
提供中断处理程序.您的编译器可能需要使用其他属性修饰中断处理程序.
SysTick_Handler(void) {
counter++;
}
Run Code Online (Sandbox Code Playgroud)
这是你的millis()功能,不可能更简单:
uint32_t millis() {
return counter;
}
Run Code Online (Sandbox Code Playgroud)
一些警告要注意.
SysTick是一个24位计数器.它将包裹溢出.在比较值或实现延迟方法时请注意这一点.
SysTick源自处理器核心时钟.如果您使用核心时钟,例如减速以节省电量,则必须手动调整SysTick频率.
你可以用 HAL_GetTick(): this function gets current SysTick counter value (incremented in
SysTick interrupt) used by peripherals drivers to handle timeouts.
| 归档时间: |
|
| 查看次数: |
8064 次 |
| 最近记录: |