main.c
#include "stm32f10x.h" //STM32头文件
#include "sys.h"
#include "delay.h"
vu32 tick=0;
void GPIO_Configuration(void);
void Systick_Configuration(void);
void Delay_Second(void);
int main (void){//主程序
RCC_Configuration(); //时钟设置
GPIO_Configuration();//设置GPIO端口
Systick_Configuration();
while(1)
{
GPIO_WriteBit(GPIOB,GPIO_Pin_0,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_0)));
Delay_Second(); //延时1秒
}
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOB,&GPIO_InitStructure);
}
void Systick_Configuration(void)
{
SysTick_Config(9000000/1000);//设置1ms所需要的时间间隔
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
}
void Delay_Second(void)//延时函数
{
tick=0;
while(tick<=1000)
;
}
stm32f10x_it.c
#include "stm32f10x_it.h"
extern vu32 tick;
void SysTick_Handler(void)
{
tick++;
}
几种点灯方法
//方法1:
GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1)); //LED1接口输出高电平1
delay_us(50000); //延时1秒
GPIO_WriteBit(LEDPORT,LED1,(BitAction)(0)); //LED1接口输出低电平0
delay_us(50000); //延时1秒
//方法2:
// GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1-GPIO_ReadOutputDataBit(LEDPORT,LED1))); //取反LED1
// delay_ms(500); //延时1秒
//方法3:
// GPIO_SetBits(LEDPORT,LED1); //LED灯都为高电平(1)
// delay_s(1); //延时1秒
// GPIO_ResetBits(LEDPORT,LED1); //LED灯都为低电平(0)
// delay_s(1); //延时1秒
//方法4
// GPIO_Write(LEDPORT,0x0001); //直接数值操作将变量值写入LED
// delay_s(2); //延时1秒
// GPIO_Write(LEDPORT,0x0000); //直接数值操作将变量值写入LED
// delay_s(2); //延时1秒
固件库函数查固件库函数库即可得
2788

被折叠的 条评论
为什么被折叠?



