新手上路
- 积分
- 37
- 金钱
- 37
- 注册时间
- 2015-3-21
- 在线时间
- 0 小时
|
发表于 2015-3-28 12:27:21
|
显示全部楼层
#include "stm32f10x.h"
void delay_us(u32 nus)
{
u32 temp;
SysTick->LOAD = 9*nus; //延时指定时间
SysTick->VAL = 0X00; //清空计数器
SysTick->CTRL = 0X01; //使能,减到零无动作,外部时钟源
do
{
temp=SysTick->CTRL; //读取当前倒计数值
}while((temp&0x01)&&(!(temp&(1<<16)))); //等待时间到达
SysTick->CTRL = 0x00; //关闭计数器
SysTick->VAL = 0X00; //清空计数器
}
void delay_ms(u32 nms)
{
u32 temp;
SysTick->LOAD = 9000*nms; //延时指定时间
SysTick->VAL = 0X00; //清空计数器
SysTick->CTRL = 0X01; //使能,减到零无动作,外部时钟源
do
{
temp=SysTick->CTRL; //读取当前倒计数值
}while((temp&0x01)&&(!(temp&(1<<16)))); //等待时间到达
SysTick->CTRL = 0x00; //关闭计数器
SysTick->VAL = 0X00; //清空计数器
}
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA
|RCC_APB2Periph_GPIOB,ENABLE);//使能 PA,PB 端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //LED0-> A.8 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO 口速度为 50MHz
GPIO_Init(GPIOA,&GPIO_InitStructure); //根据设定参数初始化 GPIOA.8
GPIO_SetBits(GPIOA,GPIO_Pin_8); //PA.8 输出高
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //LED1-> B.9 端口配置, 推挽输出
GPIO_Init(GPIOB,&GPIO_InitStructure); //推挽输出,IO 口速度为 50MHz
GPIO_SetBits(GPIOB,GPIO_Pin_9); //PB.9 输出高
while(1)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_8);
GPIO_SetBits(GPIOB,GPIO_Pin_9);
delay_us(500000);
GPIO_SetBits(GPIOA,GPIO_Pin_8);
GPIO_ResetBits(GPIOB,GPIO_Pin_9);
delay_ms(500);
}
}
|
|