日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]環(huán)境:主機:XP開發(fā)環(huán)境:MDK4.23MCU:STM32F103CBT6說明:使用內(nèi)部8M晶振,倍頻到64M供給TIM3定時器,PA6(通道1)上產(chǎn)生640K,50%方波源代碼:初始化時鐘://初始化RCC時鐘voidinit_rcc(void){//將外設(shè)RCC寄存器重設(shè)為缺

環(huán)境:

主機:XP

開發(fā)環(huán)境:MDK4.23

MCU:STM32F103CBT6

說明:

使用內(nèi)部8M晶振,倍頻到64M供給TIM3定時器,PA6(通道1)上產(chǎn)生640K,50%方波


源代碼:

初始化時鐘:


//初始化RCC時鐘

voidinit_rcc(void)

{

//將外設(shè)RCC寄存器重設(shè)為缺省值

RCC_DeInit();

//內(nèi)部晶振使能

RCC_HSICmd(ENABLE);

//等待工作穩(wěn)定

while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)==RESET);

//LSI的啟動,提供給看門狗時鐘

RCC_LSICmd(ENABLE);//打開LSI

while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY)==RESET);//等待直到LSI穩(wěn)定

if(1)

{

//使能預(yù)取指緩存

FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

//設(shè)置FLASH存儲器延時時鐘周期數(shù)。(設(shè)置為延時2個時鐘周期)

FLASH_SetLatency(FLASH_Latency_2);

//設(shè)置AHB時鐘(HCLK)(這時設(shè)置為=系統(tǒng)時鐘)

RCC_HCLKConfig(RCC_SYSCLK_Div1);

//設(shè)置SDIO的AHB時鐘(HCLK2)(這時設(shè)置為=HCLK),64M

RCC_PCLK2Config(RCC_HCLK_Div1);

//設(shè)置APB1外設(shè)時鐘(HCLK1)(這時設(shè)置為=HCLK/2),32M

RCC_PCLK1Config(RCC_HCLK_Div2);

//ADCCLK=PCLK2/8,1M

RCC_ADCCLKConfig(RCC_PCLK2_Div8);

//PLL的時鐘來源及倍頻的倍數(shù),此處設(shè)置為64MHz

RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_16);

//使能PLL

RCC_PLLCmd(ENABLE);

//檢測PLL是否就緒

while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);

//設(shè)置PLL為系統(tǒng)時鐘

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

//檢測系統(tǒng)的時鐘源是否是PLL

while(RCC_GetSYSCLKSource()!=0x08);

}

}


初始化IO口和定時器:


//設(shè)置IO口

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOA,&GPIO_InitStructure);

//設(shè)置定時器3

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);

//重新將Timer設(shè)置為缺省值

TIM_DeInit(TIM3);

//采用內(nèi)部時鐘給TIM3提供時鐘源

TIM_InternalClockConfig(TIM3);

timInitStruct.TIM_ClockDivision=TIM_CKD_DIV2;

timInitStruct.TIM_Prescaler=0;//計數(shù)頻率為64M

timInitStruct.TIM_CounterMode=TIM_CounterMode_Up;//向上計數(shù)

timInitStruct.TIM_RepetitionCounter=0;

timInitStruct.TIM_Period=100;//這個值實際上就是TIMX->ARR,延時開始時重新設(shè)定即可

TIM_TimeBaseInit(TIM3,&timInitStruct);

//設(shè)置PWM輸出

TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;

TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;

TIM_OCInitStructure.TIM_Pulse=50;

TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;

TIM_OC1Init(TIM3,&TIM_OCInitStructure);

TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);

//ARR預(yù)裝載緩沖器使能

TIM_ARRPreloadConfig(TIM3,ENABLE);

//開啟定時器

TIM_Cmd(TIM3,ENABLE);


輸出波形:


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉