OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3084|回复: 3

求助,在SysTick定时器遇到问题

[复制链接]

4

主题

15

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2016-3-21
在线时间
7 小时
发表于 2016-8-10 11:23:06 | 显示全部楼层 |阅读模式
1金钱
我是个菜鸟,刚刚接触原程序是

#include "stm32f10x.h"
#include "delay.h"
//ALIENTEK miniSTM32开发板工程模板
/*  void Delay(u32 count)
{ u32 i=0;for(;i<count;i++);
}         */
static __IO uint32_t TimingDelay;
void Delay(__IO uint32_t nTime)
{
   TimingDelay = nTime;
   while(TimingDelay != 0);
}

void SysTick_Handler(void)
{
    if (TimingDelay != 0x00)
     {
       TimingDelay--;
     }
}

int main(void)
{
    GPIO_InitTypeDef  GPIO_InitStructure;
        delay_init(72);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE);       
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;         //LED0-->PA.8 端口配置
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽输出
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_Init(GPIOA, &GPIO_InitStructure);
   GPIO_SetBits(GPIOA,GPIO_Pin_8);                         //PA.8 输出高

   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;                     //LED1-->PD.2 端口配置
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽输出
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_Init(GPIOD, &GPIO_InitStructure);       
   GPIO_SetBits(GPIOD,GPIO_Pin_2);                          //PD.2 输出高        

  if (SysTick_Config(SystemCoreClock/1000)) //systick时钟为HCLK,中断时间间隔1ms
     {
     while (1);
     }

   {  
   while(1)
    }
     while (1);
     }


                 
  while(1)
   {
                   GPIO_ResetBits(GPIOA,GPIO_Pin_8);
                   GPIO_SetBits(GPIOD,GPIO_Pin_2);           
                   Delay(100);          
                   //delay_ms(500);
                                   GPIO_SetBits(GPIOA,GPIO_Pin_8);   
                   GPIO_ResetBits(GPIOD,GPIO_Pin_2);
                                  // delay_ms(500);
                   Delay(100);
                   }
}


QQ截图20160810112213.jpg

最佳答案

查看完整内容[请看2#楼]

if (SysTick_Config(SystemCoreClock/1000)) //systick时钟为HCLK,中断时间间隔1ms { while (1); } { while(1) } while (1); } while(1) { 1、这里有什么多while(1)到达不了下面的while 2、中间的一个while(1)后面没有语句或分号 3、文件最后一行要空一个空行
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
3371
注册时间
2015-1-7
在线时间
794 小时
发表于 2016-8-10 11:23:07 | 显示全部楼层
  if (SysTick_Config(SystemCoreClock/1000)) //systick时钟为HCLK,中断时间间隔1ms
     {
     while (1);
     }

   {  
   while(1)
    }
     while (1);
     }


                 
  while(1)
   {






1、这里有什么多while(1)到达不了下面的while
2、中间的一个while(1)后面没有语句或分号
3、文件最后一行要空一个空行
机器生汇编,汇编生B,B生C,C生万物.... 经过长期对C语言的研究,目前只有两个方面不懂:这也不懂,那也不懂
https://github.com/ianhom
回复

使用道具 举报

4

主题

15

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2016-3-21
在线时间
7 小时
 楼主| 发表于 2016-8-10 11:23:47 | 显示全部楼层
错误主要集中在最后一段
while(1)
   {
                   GPIO_ResetBits(GPIOA,GPIO_Pin_8);
                   GPIO_SetBits(GPIOD,GPIO_Pin_2);            
                   Delay(100);         
                   //delay_ms(500);
                                   GPIO_SetBits(GPIOA,GPIO_Pin_8);   
                   GPIO_ResetBits(GPIOD,GPIO_Pin_2);
                                  // delay_ms(500);
                   Delay(100);
                   }
}
回复

使用道具 举报

4

主题

15

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2016-3-21
在线时间
7 小时
 楼主| 发表于 2016-8-10 22:22:21 | 显示全部楼层
ianhom 发表于 2016-8-10 11:23
if (SysTick_Config(SystemCoreClock/1000)) //systick时钟为HCLK,中断时间间隔1ms
     {
     while ...

谢谢兄弟,我知道了
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-7 23:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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