There seems to be a little bit of trouble when I run this code.
The situation is following,I'm using the STM32F4 HAL library on an emulated [in QEMU] STM32F4 Discovery board, and trying to configure TIM2 (general purpose timer) and read its' count register (without an interrupt). Currently I'm always getting 0 when attempting to read the timer counter with
uint32_t count = __HAL_TIM_GetCounter(&hTim2);
I don't want to move on to using an interrupt just yet, until I get this step working. Taking it step by step.
Here's how I configured the timer so far:
__initialize_hardware.c
__TIM2_CLK_ENABLE();// Enable the TIM2 clock// ...Timer_Init();
timer.h
TIM_HandleTypeDef hTim2;
timer.c
#include"timer.h"voidTimer_Init(void){
hTim2.Instance= TIM2;
hTim2.Init.Prescaler=40000;
hTim2.Init.CounterMode= TIM_COUNTERMODE_UP;
hTim2.Init.Period=500;
hTim2.Init.ClockDivision= TIM_CLOCKDIVISION_DIV1;
HAL_TIM_Base_Init(&hTim2);
HAL_TIM_Base_Start(&hTim2);// Trying to start the base counter}void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base){if(htim_base->Instance== TIM2){
__TIM2_CLK_ENABLE();}}void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base){if(htim_base->Instance== TIM2){
__TIM2_CLK_DISABLE();}}
then in main.c
int main(int argc,char* argv[]){while(1){uint32_t count = __HAL_TIM_GetCounter(&hTim2);
trace_printf("%lu\n", count);}}
I'm always getting 0 in count above, not sure why? Can anyone please offer some advice for my program?
Thanks