|
#include "stm32f10x.h"
/*void delay_us(u32 i) //此程序延時(shí)1us
{
u32 temp;
SysTick->LOAD=9*i; //設(shè)置重裝數(shù)值, 72MHZ時(shí)
SysTick->CTRL=0X01; //使能,減到零是無(wú)動(dòng)作,采用外部時(shí)鐘源
SysTick->VAL=0; //清零計(jì)數(shù)器
do
{
temp=SysTick->CTRL; //讀取當(dāng)前倒計(jì)數(shù)值
}
while((temp&0x01)&&(!(temp&(1<<16)))); //等待時(shí)間到達(dá)
SysTick->CTRL=0; //關(guān)閉計(jì)數(shù)器
SysTick->VAL=0; //清空計(jì)數(shù)器
}*/
void delay_ms(volatile u32 i) //此程序延時(shí)1ms,,i不能大于1800,暫不知為什么,定時(shí)一分鐘可以讓delay_ms(1000)for循環(huán)60次來(lái)實(shí)現(xiàn),需測(cè)試
{
volatile u32 temp;
SysTick->LOAD=9000*i; //設(shè)置重裝數(shù)值, 72MHZ時(shí)
SysTick->CTRL=0X01; //使能,減到零是無(wú)動(dòng)作,采用外部時(shí)鐘源
SysTick->VAL=0; //清零計(jì)數(shù)器
do
{
temp=SysTick->CTRL; //讀取當(dāng)前倒計(jì)數(shù)值
}
while((temp&0x01)&&(!(temp&(1<<16)))); //等待時(shí)間到達(dá)
SysTick->CTRL=0; //關(guān)閉計(jì)數(shù)器
SysTick->VAL=0; //清空計(jì)數(shù)器
}
int main(void)
{
GPIO_InitTypeDef GPIO_InitStruct; //定義CPIO初始化類(lèi)型定義
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); //使能GPIOA的時(shí)鐘
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13; //填入LED連接的引腳
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; //設(shè)置該引腳的模式為推挽輸出
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //設(shè)置引腳的輸出速度
GPIO_Init(GPIOC,&GPIO_InitStruct); //使用GPIO初始化函數(shù) 初始化 所需要用的引腳
while(1)
{
GPIO_ResetBits(GPIOC,GPIO_Pin_13); //給PA8低電平使小燈亮起來(lái)
delay_ms(1000);
GPIO_SetBits(GPIOC,GPIO_Pin_13); //給PA8高電平使小燈滅
delay_ms(1000);
}
}
這是一個(gè)led閃爍的程序,我在stm32f103c6t6上燒錄就可以1s亮滅一次,但是在stm32f103c8t6上燒錄燈就是一直亮,這是怎么回事,是買(mǎi)到了假貨嗎,我看c8t6的絲印確實(shí)有點(diǎn)模糊,但是c8t6的芯片延時(shí)改成delay_ms(100);的話也能看到閃爍,閃爍的特別快,改成1000就長(zhǎng)亮。。。很奇怪啊
|
|