打印
[其他ST产品]

请教关于SysTick—系统定时器使用问题

[复制链接]
楼主: elephant00
手机看帖
扫描二维码
随时随地手机跟帖
101
jlyuan| | 2023-6-13 20:59 | 只看该作者 回帖奖励 |倒序浏览
优化级别调成 level 0试试 可以有限规避楼上的情况

使用特权

评论回复
102
yszong| | 2023-6-13 21:00 | 只看该作者
void Delay(u32 nTime)
{
TimingDelay = nTime;
while(TimingDelay != 0)
{
   __WFI();
  
}
}

volatile uint32_t TimingDelay =0;

用上述两招试试

使用特权

评论回复
103
houcs| | 2023-6-13 21:02 | 只看该作者
写法有问题,应该在delay延时函数中赋初始值后,在启动嘀嗒时钟。

使用特权

评论回复
104
liuzaiy| | 2023-6-13 21:04 | 只看该作者
大哥,作用域详细了解一下,c语言基本功不够扎实啊,

使用特权

评论回复
105
pangb| | 2023-6-13 21:09 | 只看该作者
加__nop,在此设断点

void Delay(u32 nTime)
{
        TimingDelay = nTime;
        while(TimingDelay != 0)  // 仿真时看到TimingDelay等于0了,始终不能退出while。
        {
                __nop();
        }
        __nop();
}

使用特权

评论回复
106
chenjunt| | 2023-6-13 21:11 | 只看该作者
另外delay不要在中断中调用

使用特权

评论回复
107
chenjunt| | 2023-6-13 21:13 | 只看该作者
截图看怎么看出TimingDelay等于0了但还在执行循环

使用特权

评论回复
108
ousj| | 2023-6-13 21:15 | 只看该作者
你在Delay()里的while循环里添加打印再看下

使用特权

评论回复
109
morrisk| | 2023-6-13 21:16 | 只看该作者
怎么判断退不出来?

使用特权

评论回复
110
morrisk| | 2023-6-13 21:20 | 只看该作者
Systick定时器,是一个简单的定时器

使用特权

评论回复
111
zyf部长| | 2023-6-13 21:22 | 只看该作者
怎么看出来程序不会退出的啊?

使用特权

评论回复
112
xxmmi| | 2023-6-13 21:23 | 只看该作者
STM32怎么用库函数使用滴答定时器?

使用特权

评论回复
113
renyaq| | 2023-6-13 21:44 | 只看该作者
SysTick:系统定时器,24位,只能递减,存在于内核,嵌套在NVIC中,所有的Cortex-M内核的单片机都具有这个定时器。

使用特权

评论回复
114
supernan| | 2023-6-13 21:47 | 只看该作者
systick具体延时时间怎么计算的?

使用特权

评论回复
115
xxrs| | 2023-6-13 21:48 | 只看该作者

ST的CM3、CM4、CM7内核芯片,都有Systick定时器

使用特权

评论回复
116
xxrs| | 2023-6-13 21:50 | 只看该作者
从代码逻辑上看的确没啥问题,应该是优化方面的原因。

使用特权

评论回复
117
dengdc| | 2023-6-13 21:51 | 只看该作者
适当调整下优化等级看看。

使用特权

评论回复
118
wuhany| | 2023-6-13 21:53 | 只看该作者
要不你把那个公共变量TimeDelay加上volatile试试。

使用特权

评论回复
119
heweibig| | 2023-6-13 21:54 | 只看该作者
定时器和systick哪个好               

使用特权

评论回复
120
huangchui| | 2023-6-13 21:55 | 只看该作者
用内部晶振 设置Systick延时怎么设置

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则