产生 1khz 的方波信号
#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->PA.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->PB.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(500);
GPIO_SetBits(GPIOA,GPIO_Pin_8);
GPIO_ResetBits(GPIOB,GPIO_Pin_9);
delay_us(500);
}
}