OpenEdv-开源电子网

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

请问systick的中断为什么没打开

[复制链接]

7

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2013-8-1
在线时间
5 小时
发表于 2013-8-5 13:47:09 | 显示全部楼层 |阅读模式
我在systick的初始中调用了SysTick_Config,但是进不了中断,是不是要开nvic上面的什么中断使能啊??

main.c

#include "stm32f10x_conf.h"
#include "led.h"
#include "delay.h"
int main(void)
{
LED_Init();//初始化了gpio的时钟和模式
SysTick_Init();//初始化了tickinit
while(1)
{
LED0=1;//熄灭了led0
LED1=0;//点亮了led1
delay_us(500000);
LED0=0;
LED1=1;
delay_us(500000);
}
}


led.c

#include"led.h"
void LED_Init(void)
{
GPIO_InitTypeDef P;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//GPIOB?±??
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//GPIOE?±??
P.GPIO_Pin=GPIO_Pin_5 ;
P.GPIO_Speed=GPIO_Speed_50MHz ;
P.GPIO_Mode=GPIO_Mode_Out_PP ; 
GPIO_Init (GPIOB,&);//???ì????
GPIO_Init (GPIOE,&);
}

delay.c

#include "delay.h"
volatile uint8_t TimingDelay=0;
void TimingDelay_Change(void)
{
TimingDelay=0;
}
void SysTick_Open()
{
SysTick->VAL    = 0;  
SysTick->CTRL  |= SysTick_CTRL_ENABLE_Msk;   
}

void SysTick_Close()
{
SysTick->CTRL  &= ~SysTick_CTRL_ENABLE_Msk;   
}


void SysTick_Init()//只是初始化,初值无意义
{
uint8_t state=1;
while(!state)
{
state=SysTick_Config(0xffffffff);
}
SysTick_Close();
}

void delay_us(uint32_t time)//   
{
TimingDelay=1;//进中断后改变状态
SysTick->LOAD  = time*72- 1; 
SysTick_Open();
while(TimingDelay); //等待中断改变状态
SysTick_Close();
}

stm32f10x_it.c

void SysTick_Handler(void)
{
TimingDelay_Change();
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

37

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
309
金钱
309
注册时间
2012-9-27
在线时间
19 小时
发表于 2013-8-5 14:07:06 | 显示全部楼层
回复 支持 反对

使用道具 举报

7

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2013-8-1
在线时间
5 小时
 楼主| 发表于 2013-8-5 14:42:17 | 显示全部楼层
回复【2楼】charly:
---------------------------------
大神,看看~~~
回复 支持 反对

使用道具 举报

37

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
309
金钱
309
注册时间
2012-9-27
在线时间
19 小时
发表于 2013-8-5 15:54:00 | 显示全部楼层
回复【3楼】421648362:
---------------------------------
我也是刚学,不是大神,一起学习。你这个systick的时钟初始化了吗?
回复 支持 反对

使用道具 举报

7

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2013-6-29
在线时间
0 小时
发表于 2013-8-5 17:27:11 | 显示全部楼层
拜托,你用库能不能看清楚库的函数???state=SysTick_Config(0xffffffff);
库函数里面的:
static __INLINE uint32_t SysTick_Config(uint32_t ticks)

  if (ticks > SysTick_LOAD_RELOAD_Msk)  return (1);            /* Reload value impossible */
                                                               
  SysTick->LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;      /* set reload register */
  NVIC_SetPriority (SysTick_IRQn,0);  /* set riority for Cortex-M0 System Interrupts */
  SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */
  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk | 
                   SysTick_CTRL_TICKINT_Msk   | 
                   SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */
  return (0);                                                  /* Function successful */
}
return返回的永远是1.死循环。
而且你的初始化程序根本就没执行过。。。。。。没有初始化的,何来中断。
回复 支持 反对

使用道具 举报

7

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2013-8-1
在线时间
5 小时
 楼主| 发表于 2013-8-5 19:56:41 | 显示全部楼层
回复【5楼】hqr1021:
---------------------------------
谢谢了,我知道哪错了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-15 16:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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