Hi, I am not sure, If I did not asked before, but forum search has not found anything.
I am new in CooCox and ARM, I worked with AVRs before. What I miss in CooCox is "delay.h" lib similar to AVR GCC. I hnow, that I can use SysTimer for milisecond delays, but what are you using for micro second delays? (something like _delay_us)
My current solution is:
void _delay_us(uint16_t nTime)
{
TIM3->CNT = 0;
while ( (TIM3->CNT) < nTime);
}
where TIM3 si set for us clock
void Timer3_Init(void)
{
// 1 MHz clock
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Prescaler = 21 ; // I have 22MHz clock
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
//TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Down;
TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
// Set one shot
TIM_SelectOnePulseMode(TIM3, TIM_OPMode_Single);
/* TIM2 enable counter */
TIM_Cmd(TIM3, ENABLE);
}
It is clear, that it is not accurate for very short delays. But my typical delays are longer than 10us.
Is this OK, or you have some better solution?
Thank you