systick用STM的固件库V3.5.0总在while循环里死机(附代码)

2019-07-14 18:13发布

用STM的固件库V3.5.0,总是在while(timingDelay != 0);里死机,是什么个情况啊?
代码如下:
#include "SysTick.h"
#include "usart1.h"
#include

static __IO u32 TimingDelay;

/*
* 函数名:SysTick_Init
* 描述  :启动系统滴答定时器 SysTick
* 输入  :无
* 输出  :无
* 调用  :外部调用
*/
void SysTick_Init(void)
{
        /* SystemFrequency / 1000    1ms中断一次
         * SystemFrequency / 100000         10us中断一次
         * SystemFrequency / 1000000 1us中断一次
         */
        if (SysTick_Config(SystemFrequency / 100000))        // ST3.0.0库版本
        if (SysTick_Config(SystemCoreClock / 100000))        // ST3.5.0库版本
        {
                /* Capture error */
                while (1);
        }
                // 关闭滴答定时器  
        SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;        
}


/*
* 函数名:Delay_us
* 描述  :us延时程序,10us为一个单位
* 输入  :- nTime
* 输出  :无
* 调用  :Delay_us( 1 ) 则实现的延时为 1 * 10us = 10us
*       :外部调用
*/

void Delay_us(__IO u32 nTime)
{
        TimingDelay = nTime;        

        // 使能滴答定时器  
        SysTick->CTRL |=  SysTick_CTRL_ENABLE_Msk;

        while(TimingDelay != 0);
}


/*
* 函数名:TimingDelay_Decrement
* 描述  :获取节拍程序
* 输入  :无
* 输出  :无
* 调用  :在 SysTick 中断函数 SysTick_Handler()调用
*/  
void TimingDelay_Decrement(void)
{
        if (TimingDelay != 0x00)
        {
        TimingDelay--;
        }
}
文件"STM32f10x_it.h"

/**
  * @brief  This function handles SysTick Handler.
  * @param  None
  * @retval : None
  */
void SysTick_Handler(void)
{
        TimingDelay_Decrement();        
}
文件“main.c”里
调用        SysTick_Init();

Delay_us(50000);            // 50000 * 10us = 500ms
求大神指教!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
maruidiyi
1楼-- · 2019-07-15 02:29
SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;       
SysTick->CTRL |=  SysTick_CTRL_ENABLE_Msk;
这两句语句注释掉,在运行看看
Sabrina_cc
2楼-- · 2019-07-15 03:37
滴答定时器一直开着不关试试
freesea123
3楼-- · 2019-07-15 04:09
设置几个if条件,在里面打上断点看看
hu_wflllllllg21
4楼-- · 2019-07-15 05:04
 精彩回答 2  元偷偷看……
hu_wflllllllg21
5楼-- · 2019-07-15 09:36
回复第 3 楼 于2014-04-03 08:05:38发表:
滴答定时器一直开着不关试试
用的5.0的库,在ram里调试,不行啊
 
hu_wflllllllg21
6楼-- · 2019-07-15 11:54
回复第 4 楼 于2014-04-04 08:59:21发表:
设置几个if条件,在里面打上断点看看
能否说明白点,大哥
 

一周热门 更多>