硬汉嵌入式论坛

 找回密码
 立即注册
查看: 262|回复: 3
收起左侧

[技术讨论] APM32F103 IO口时序问题

[复制链接]

3

主题

10

回帖

19

积分

新手上路

积分
19
发表于 2025-12-19 14:13:10 | 显示全部楼层 |阅读模式
APM32F103的时序问题,设计了一个小程序按照100us进行IO口翻转,如下所示,可以实现100us左右的翻转。
但是只要LOAD值改为7200就会变成100us高,800us低的情况,着实纳闷了。
编译器是KEIL AC6

/* static function -----------------------------------------------------------*/
#pragma optimize clang off
__INLINE static void delay_100us(void)
{
    //SysTick->LOAD = 9600-96;
    SysTick->LOAD = 7200-72;
    SysTick->VAL = 0x00;
    SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
    do
    {

    } while ((SysTick->CTRL & 0x01) && !(SysTick->CTRL & (1 << 16))); // &#65533;&#564;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;
    SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; //
    //SysTick->VAL = 0x00;
}
#pragma optimize clang on

/* extern function -----------------------------------------------------------*/
int main(void)
{
        GPIO_Init_Config();
        SysTick_Init_Config();

        while (1)
        {
            for(;;)
            {
                delay_100us();
                GPIOE->ODATA = 0x00000020;//LED1
                delay_100us();
                GPIOE->ODATA = 0x00000000;//LED1
            }
        }
}

回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120427
QQ
发表于 2025-12-20 10:27:46 | 显示全部楼层
103可以使用DWT时钟周期计数器,更方便。

DWT实现一个精确微秒延迟的参考例程
https://forum.anfulai.cn/forum.p ... 9128&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

3

主题

10

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2025-12-22 15:29:06 | 显示全部楼层
while ((SysTick->CTRL & 0x01) && !(SysTick->CTRL & (1 << 16)));
这条语句如果改为
while (!(SysTick->CTRL & (1 << 16)));
就不会出现这个异常的情况了
或者使用AC 5进行编译也是正常的,跟AC 6编译有关
回复

使用道具 举报

3

主题

10

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2025-12-22 15:56:02 | 显示全部楼层
eric2013 发表于 2025-12-20 10:27
103可以使用DWT时钟周期计数器,更方便。

DWT实现一个精确微秒延迟的参考例程

ERIC 哥这个办法好,又省一个定时器
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-1-9 17:32 , Processed in 0.041061 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表