30-31sysTick

//错误点:led_gpio_rcc时钟函数配错了  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);

//main函数

int main(void)
{
led_Init();
systickInit(1000);   //1秒
while(1)
{
GPIO_ResetBits(GPIOC,GPIO_Pin_5);
systickInit(500);
GPIO_SetBits(GPIOC,GPIO_Pin_5);
systickInit(500);
}
return 0;

}

//头文件夹

#ifndef SYSTICK1_H
#define SYSTICK1_H

#include "stm32f10x.h"
#include "core_cm3.h"
uint32_t systickInit(uint32_t ms);
void led_Init(void);
#endif

//////////////////////systick1.c文件

#include "systick1.h"

uint32_t systickInit(uint32_t ms) //配置毫秒亮一次
{
uint32_t i;
#if 0
uint32_t ticks;
if(ticks>SysTick_LOAD_RELOAD_Msk)
{
return -1;
}
SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;
NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);
SysTick->VAL = 0;
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | //这个宏在哪里找??
SysTick_CTRL_TICKINT_Msk |
SysTick_CTRL_ENABLE_Msk;
#endif
SysTick_Config(72000); //调用这个函数就可以了,里面的寄存器初始化已经设置好了
for(i=0;i<ms;i++)
{
while(!((SysTick->CTRL)&(1<<16))); //使用查询的方式查看第16位
}
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
return 0;
}

void led_Init(void)
{
//led6 pc5 0
GPIO_InitTypeDef GPIO_InitStruct1;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);           //rcc的函数不要调用错了

GPIO_InitStruct1.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStruct1.GPIO_Speed =GPIO_Speed_50MHz;
GPIO_InitStruct1.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC,&GPIO_InitStruct1);
GPIO_SetBits(GPIOC,GPIO_Pin_5);

}

原文地址:https://www.cnblogs.com/tiange-137/p/12107804.html