stm32 rtems_counter_delay_nanoseconds() longer

Gedare Bloom gedare at rtems.org
Fri Jul 5 16:22:31 UTC 2019


On Thu, Jul 4, 2019 at 2:45 AM Jython <googcheng at gmail.com> wrote:
>
> is there someone could help me
>
I can give you some guesses.

> On Sun, Jun 30, 2019 at 2:36 PM Jython <googcheng at gmail.com> wrote:
>>
>> a 21ms counter in fact more than 10s, see log , my rtc 10s wake up
>>
>> static void Delay_ms(x)
>> {
>>     #if 0
... // delete noise
>>     #endif
>>     volatile int i;
>>     int us_cnt = 1000*x;
>From what you said, probably x=21, and us_cnt = 21000

>>     printf("delay x %dms us_cnt %d\n", x, us_cnt);
>>     for(i = 0; i < us_cnt; i++)
>>         rtems_counter_delay_nanoseconds(1000);
You make 21000 calls to this function with 1000ns (1 us) per call. You
should debug what is happening during a call to
rtems_counter_delay_nanoseconds(1000).

Some things to be aware of. The function does not disable interrupts
or task switches, so if you have other tasks/interrupts, they may be
scheduled and cause your delay to be even longer than you anticipate.

I would check what is the granularity of your processor ability to
tell time. That is, what is the size of a "tick". This function will
convert the nanosecond argument to some number of ticks, and then
delay at least that many ticks. One possibility is that your tick is
around 500 microseconds, so each call you make is really becoming
rtems_counter_delay_ticks(1) ==
rtems_counter_delay_nanoseconds(500000).  Thus, delay about .0005
seconds per call * 21000 calls = 10.5 seconds.

>>
>>     printf("end delay\n");
>> }
>>
>>
>> [14:33:18.242]ÊÕ¡û¡ôflash_buf 32 00 00 00
>> write page index 50
>> log_page_no = 50
>> before while
>> loop begin
>> dtr set 0
>> baud 9600 at UART1_ChangeBaud
>> USART_WordLength_8b
>> USART_StopBits_1
>> delay x 21ms us_cnt 21000
>>
>> [14:33:21.055]ÊÕ¡û¡ôafter clr isr 00000033
>>
>> [14:33:31.056]ÊÕ¡û¡ôafter clr isr 00000033
>>
>> [14:33:32.759]ÊÕ¡û¡ôend delay
>> Lenggui_ClrBuffer begin okflag 0
>>
>>
>>
> _______________________________________________
> users mailing list
> users at rtems.org
> http://lists.rtems.org/mailman/listinfo/users


More information about the users mailing list