|
- #include "stm32f10x.h"
- #include "led.h"
- #include "delay.h"
- #include "timer.h"
- int main(void)
- {
- delay_init();
- TIM3_PWM_Init(199,7199);
- TIM_SetCompare1(TIM3,195); //對應(yīng)0度
- delay_ms(100);
- // TIM3_Int_Init(4999,7199); //500ms
-
- while(1)
- {
- TIM_SetCompare1(TIM3,175); //對應(yīng)180度
- delay_ms(500);
- TIM_SetCompare1(TIM3,180); //對應(yīng)135度
- delay_ms(500);
- TIM_SetCompare1(TIM3,185); //對應(yīng)90度
- delay_ms(500);
- TIM_SetCompare1(TIM3,190); //對應(yīng)45度
- delay_ms(500);
- TIM_SetCompare1(TIM3,195); //對應(yīng)0度
- }
- }
復(fù)制代碼- #include "timer.h"
- #include "led.h"
- void TIM3_Int_Init(u16 arr,u16 psd)
- {
- TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStrue;
- NVIC_InitTypeDef NVIC_InitStructure;
-
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
-
- TIM_TimeBaseInitStrue.TIM_Period=arr;
- TIM_TimeBaseInitStrue.TIM_Prescaler=psd;
- TIM_TimeBaseInitStrue.TIM_CounterMode=TIM_CounterMode_Up;
- TIM_TimeBaseInitStrue.TIM_ClockDivision=TIM_CKD_DIV1;
-
- TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStrue);
- TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
-
- //中斷優(yōu)先級NVIC設(shè)置
- NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3中斷
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占優(yōu)先級0級
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //從優(yōu)先級3級
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
- NVIC_Init(&NVIC_InitStructure); //初始化NVIC寄存器
-
- TIM_Cmd(TIM3,ENABLE);
- }
- void TIM3_IRQHandler(void)
- {
- if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET)
- {
- LED1=!LED1;
- TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
- }
- }
- void TIM3_PWM_Init(u16 arr,u16 psc)
- {
- GPIO_InitTypeDef GPIO_InitTypeStructure;
- TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStrue;
- TIM_OCInitTypeDef TIM_OCInitTypeStrue;
-
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ,ENABLE);
-
- // GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE);
-
-
- GPIO_InitTypeStructure.GPIO_Mode=GPIO_Mode_AF_PP; //推挽輸出
- GPIO_InitTypeStructure.GPIO_Pin=GPIO_Pin_6;
- GPIO_InitTypeStructure.GPIO_Speed=GPIO_Speed_50MHz;
- GPIO_Init(GPIOA, &GPIO_InitTypeStructure);
-
- TIM_TimeBaseInitStrue.TIM_Period=arr;
- TIM_TimeBaseInitStrue.TIM_Prescaler=psc;
- TIM_TimeBaseInitStrue.TIM_ClockDivision= 0;
- TIM_TimeBaseInitStrue.TIM_CounterMode=TIM_CounterMode_Up;
- TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStrue);
-
-
-
- TIM_OCInitTypeStrue.TIM_OCMode=TIM_OCMode_PWM2;
- TIM_OCInitTypeStrue.TIM_OCNPolarity=TIM_OCPolarity_High;
- TIM_OCInitTypeStrue.TIM_OutputState=TIM_OutputState_Enable;
- TIM_OCInitTypeStrue.TIM_Pulse= 0;
- TIM_OC1Init(TIM3,&TIM_OCInitTypeStrue);
- TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);
-
-
- TIM_ARRPreloadConfig(TIM3, ENABLE);
-
- TIM_Cmd(TIM3,ENABLE);
- }
- // void SG90_Init(float angle)
- // {
- // angle=(u16)(50.0*angle/9.0+249.0);
- // TIM_SetCompare1(TIM3,angle);
- // }
復(fù)制代碼
全部資料51hei下載地址:
Template.7z
(180.36 KB, 下載次數(shù): 95)
2020-4-1 18:07 上傳
點(diǎn)擊文件名下載附件
sg90驅(qū)動 下載積分: 黑幣 -5
|
評分
-
查看全部評分
|