我在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();
}
|