久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1411|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

一些電機(jī)驅(qū)動(dòng)的程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:333626 發(fā)表于 2018-5-19 13:50 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
主程序
#include "public.h"
#include "printf.h"
#include "adc.h"
#include "systick.h"
#include "public.h"
#include "pwm.h"
#include "systick.h"
/****************************************************************************
* Function Name        : main
* Description        : Main program.
* Input        : None
* Output        : None
* Return        : None
****************************************************************************/ int main()
{
u32 ti1=5; u32 ti2=5; u32 ad1=0; u32 ad2=0; u32 ad3=0; u32 ad4=0; u32 m1,m2; u8 i;
pwm1_init();        //PWM1 初始化
pwm2_init();                        //PWM2 初始化 adc1_init();        //ADC1 初始化 adc2_init();        //ADC2 初始化 adc3_init();        //ADC3 初始化 adc4_init();        //ADC4 初始化 printf_init();                //printf 初始化
while(1)
{
GPIO_SetBits(GPIOA,GPIO_Pin_0); ad1=0;
for(i=0;i<50;i++)//讀取 50 次的 AD 數(shù)值取其平均數(shù)較為準(zhǔn)確


{
ADC_RegularChannelConfig(ADC1,ADC_Channel_0,1,ADC_SampleTime_239Cycles5); ADC_SoftwareStartConvCmd(ADC1, ENABLE); while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));//轉(zhuǎn)換結(jié)束標(biāo)志位 ad1=ad1+ADC_GetConversionValue(ADC1);//返回最近一次 ADCx 規(guī)則組的轉(zhuǎn)
換結(jié)果
}
ad1=ad1/50; printf("ad1=%f\n",ad1*3.3/4096);
//        GPIO_ResetBits(GPIOA,GPIO_Pin_0); delay_ms(1000); GPIO_ResetBits(GPIOA,GPIO_Pin_0);
ad2=0;
for(i=0;i<50;i++)//讀取 50 次的 AD 數(shù)值取其平均數(shù)較為準(zhǔn)確
{
ADC_RegularChannelConfig(ADC2,ADC_Channel_1,1,ADC_SampleTime_239Cycles5); ADC_SoftwareStartConvCmd(ADC2, ENABLE); while(!ADC_GetFlagStatus(ADC2,ADC_FLAG_EOC));//轉(zhuǎn)換結(jié)束標(biāo)志位
ad2=ad2+ADC_GetConversionValue(ADC2);//返回最近一次 ADCx 規(guī)則組的轉(zhuǎn)


換結(jié)果
}
ad2=ad2/50; printf("ad2=%f\n",ad2*3.3/4096); delay_ms(1000);
ad3=0;
for(i=0;i<50;i++)//讀取 50 次的 AD 數(shù)值取其平均數(shù)較為準(zhǔn)確
{


ADC_RegularChannelConfig(ADC3,ADC_Channel_13,1,ADC_SampleTime_239Cycles5); ADC_SoftwareStartConvCmd(ADC3, ENABLE); while(!ADC_GetFlagStatus(ADC3,ADC_FLAG_EOC));//轉(zhuǎn)換結(jié)束標(biāo)志位
ad3=ad3+ADC_GetConversionValue (ADC3);//返回最近一次 ADCx 規(guī)則組的轉(zhuǎn)


換結(jié)果
}
ad3=ad3/50; printf("ad3=%f\n",ad3*3.3/4096);


//        GPIO_ResetBits(GPIOC,GPIO_Pin_3); delay_ms(1000);
GPIO_SetBits(GPIOC,GPIO_Pin_3); ad4=0;
for(i=0;i<50;i++)//讀取 50 次的 AD 數(shù)值取其平均數(shù)較為準(zhǔn)確
{
ADC_RegularChannelConfig(ADC1,ADC_Channel_3,1,ADC_SampleTime_239Cycles5); ADC_SoftwareStartConvCmd(ADC1, ENABLE); while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));//轉(zhuǎn)換結(jié)束標(biāo)志位
ad4=ad4+ADC_GetConversionValue (ADC1);//返回最近一次 ADCx 規(guī)則組的轉(zhuǎn)


換結(jié)果
}
ad4=ad4/50; printf("ad4=%f\n",ad4*3.3/4096); delay_ms(1000); GPIO_ResetBits(GPIOA,GPIO_Pin_3);
if (ad1>ad3)
{


m1=ad1-ad3;
if (m1>100)
{


}
else
GPIO_ResetBits(GPIOC,GPIO_Pin_4);                //PC4,使能端 GPIO_SetBits(GPIOC,GPIO_Pin_5);        //PC5,CW 方向了控制 TIM_SetCompare2(TIM2, ti2);//設(shè)置 TIMx 捕獲比較 2 寄存器值


GPIO_SetBits(GPIOC,GPIO_Pin_4);  //PC4,使能端
}
else if (ad1<ad3)
{
m1=ad3-ad1;
if (m1>100)
{
GPIO_ResetBits(GPIOC,GPIO_Pin_4);        //PC4,使能端


GPIO_ResetBits(GPIOC,GPIO_Pin_5);        //PC5,CW  方向了控
TIM_SetCompare2(TIM2, ti2);//設(shè)置 TIMx 捕獲比較 2 寄存器值


}
else
}
else
GPIO_SetBits(GPIOC,GPIO_Pin_4); //PC4,使能端


GPIO_SetBits(GPIOC,GPIO_Pin_4);  //PC4,使能端
if (ad2>ad4)
{
m2=ad2-ad4;
if (m2>500)
{


}
else
GPIO_ResetBits(GPIOC,GPIO_Pin_1); GPIO_SetBits(GPIOC,GPIO_Pin_0);
TIM_SetCompare2(TIM3, ti1);//設(shè)置 TIMx 捕獲比較 2 寄存器值


GPIO_SetBits(GPIOC,GPIO_Pin_1);   //PC1,使能端 m2
}
else if (ad2<ad4)
{
m2=ad4-ad2;
if (m2>500)
{
GPIO_ResetBits(GPIOC,GPIO_Pin_1); GPIO_ResetBits(GPIOC,GPIO_Pin_0);
TIM_SetCompare2(TIM3, ti1);//設(shè)置 TIMx 捕獲比較 2 寄存器值


else
}
else
GPIO_SetBits(GPIOC,GPIO_Pin_1); //PC1,使能端 m2
}


GPIO_SetBits(GPIOC,GPIO_Pin_1);   //PC1,使能端 m2
}
}


/*
//M2 縱軸
{
GPIO_ResetBits(GPIOC,GPIO_Pin_1); GPIO_SetBits(GPIOC,GPIO_Pin_0);
TIM_SetCompare2(TIM3, ti1);//設(shè)置 TIMx 捕獲比較 2 寄存器值
while(1);
}
*/
/*
//M1 橫軸
{
GPIO_ResetBits(GPIOC,GPIO_Pin_4); GPIO_SetBits(GPIOC,GPIO_Pin_5);
TIM_SetCompare2(TIM2, ti2);//設(shè)置 TIMx 捕獲比較 2 寄存器值
//while(1);
}
}
}
*/
/**
//        GPIO_ResetBits(GPIOC,GPIO_Pin_1);
//        GPIO_SetBits(GPIOC,GPIO_Pin_0);
//        TIM_SetCompare2(TIM3, ti1);//設(shè)置 TIMx 捕獲比較 2 寄存器值
//        while(1);
//        GPIO_ResetBits(GPIOC,GPIO_Pin_4);
//        GPIO_SetBits(GPIOC,GPIO_Pin_5);
//        TIM_SetCompare2(TIM2, ti2);//設(shè)置 TIMx 捕獲比較 2 寄存器值
//        while(1);
*/
ADC 程序
#include "adc.h" void adc1_init()
{
GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO|RCC_ APB2Periph_ADC1,ENABLE);


GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;//ADC GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;        //模擬輸入
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStructure);
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = ENABLE; ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel = 1;
ADC_Init(ADC1, &ADC_InitStructure);
//設(shè)置指定 ADC 的規(guī)則組通道,設(shè)置它們的轉(zhuǎn)化順序和采樣時(shí)間
ADC_RegularChannelConfig(ADC1,ADC_Channel_0,1,ADC_SampleTime_239Cycles5);
ADC_Cmd(ADC1,ENABLE);
ADC_ResetCalibration(ADC1);//重置指定的 ADC 的校準(zhǔn)寄存器
while(ADC_GetResetCalibrationStatus(ADC1));//獲取 ADC 重置校準(zhǔn)寄存器的狀態(tài)
ADC_StartCalibration(ADC1);//開(kāi)始指定 ADC 的校準(zhǔn)狀態(tài)
while(ADC_GetCalibrationStatus(ADC1));//獲取指定 ADC 的校準(zhǔn)程序
ADC_SoftwareStartConvCmd(ADC1, ENABLE);//使能或者失能指定的 ADC 的軟件轉(zhuǎn) 換啟動(dòng)功能
}
void adc2_init()
{
GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO|RCC_ APB2Periph_ADC2,ENABLE);


GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;//ADC GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;        //模擬輸入
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStructure);
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = ENABLE; ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel = 1;
ADC_Init(ADC2, &ADC_InitStructure);
//設(shè)置指定 ADC 的規(guī)則組通道,設(shè)置它們的轉(zhuǎn)化順序和采樣時(shí)間
ADC_RegularChannelConfig(ADC2,ADC_Channel_1,1,ADC_SampleTime_239Cycles5); ADC_Cmd(ADC2,ENABLE);
ADC_ResetCalibration(ADC2);//重置指定的 ADC 的校準(zhǔn)寄存器
while(ADC_GetResetCalibrationStatus(ADC2));//獲取 ADC 重置校準(zhǔn)寄存器的狀態(tài)
ADC_StartCalibration(ADC2);//開(kāi)始指定 ADC 的校準(zhǔn)狀態(tài)
while(ADC_GetCalibrationStatus(ADC2));//獲取指定 ADC 的校準(zhǔn)程序
ADC_SoftwareStartConvCmd(ADC2, ENABLE);//使能或者失能指定的 ADC 的軟件轉(zhuǎn) 換啟動(dòng)功能
}
void adc3_init()
{
GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO|RCC_ APB2Periph_ADC3,ENABLE);


GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;//ADC GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;        //模擬輸入
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOC,&GPIO_InitStructure);
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = ENABLE; ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel = 1;
ADC_Init(ADC3, &ADC_InitStructure);
//設(shè)置指定 ADC 的規(guī)則組通道,設(shè)置它們的轉(zhuǎn)化順序和采樣時(shí)間
ADC_RegularChannelConfig(ADC3,ADC_Channel_13,1,ADC_SampleTime_239Cycles5)
;
ADC_Cmd(ADC3,ENABLE);
ADC_ResetCalibration(ADC3);//重置指定的 ADC 的校準(zhǔn)寄存器
while(ADC_GetResetCalibrationStatus(ADC3));//獲取 ADC 重置校準(zhǔn)寄存器的狀態(tài)
ADC_StartCalibration(ADC3);//開(kāi)始指定 ADC 的校準(zhǔn)狀態(tài)
while(ADC_GetCalibrationStatus(ADC3));//獲取指定 ADC 的校準(zhǔn)程序
ADC_SoftwareStartConvCmd(ADC3, ENABLE);//使能或者失能指定的 ADC 的軟件轉(zhuǎn) 換啟動(dòng)功能
}
void adc4_init()
{
GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO|RCC_ APB2Periph_ADC1,ENABLE);


GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;//ADC GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;        //模擬輸入
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStructure);
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //獨(dú)立模式
ADC_InitStructure.ADC_ScanConvMode = ENABLE;        //掃描模式 ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; //連續(xù)轉(zhuǎn)換模式 ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel = 1; ADC_Init(ADC1, &ADC_InitStructure);
//設(shè)置指定 ADC 的規(guī)則組通道,設(shè)置它們的轉(zhuǎn)化順序和采樣時(shí)間
ADC_RegularChannelConfig(ADC1,ADC_Channel_3,1,ADC_SampleTime_239Cycles5); ADC_Cmd(ADC1,ENABLE);
ADC_ResetCalibration(ADC1);//重置指定的 ADC 的校準(zhǔn)寄存器
while(ADC_GetResetCalibrationStatus(ADC1));//獲取 ADC 重置校準(zhǔn)寄存器的狀態(tài)
ADC_StartCalibration(ADC1);//開(kāi)始指定 ADC 的校準(zhǔn)狀態(tài)
while(ADC_GetCalibrationStatus(ADC1));//獲取指定 ADC 的校準(zhǔn)程序
ADC_SoftwareStartConvCmd(ADC1, ENABLE);//使能或者失能指定的 ADC 的軟件轉(zhuǎn) 換啟動(dòng)功能
}
PWM 程序
#include "pwm.h"
void pwm1_init()
{
GPIO_InitTypeDef GPIO_InitStructure;        //聲明一個(gè)結(jié)構(gòu)體變量,用來(lái)初始化 GPIO
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;//聲明一個(gè)結(jié)構(gòu)體變量,用來(lái)初 始化定時(shí)器


化外設(shè) TIMx
/* 開(kāi)啟時(shí)鐘 */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
/*        配置 GPIO 的模式和 IO 口 */ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//復(fù)用推挽輸出
GPIO_Init(GPIOC,&GPIO_InitStructure);
/*        配置 GPIO 的模式和 IO 口 */ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;        //選擇你要設(shè)置的 IO GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;        //設(shè)置推挽輸出模式 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;                //設(shè)置傳輸速率 GPIO_Init(GPIOC,&GPIO_InitStructure);                /* 初始化 GPIO */
/*        配置 GPIO 的模式和 IO 口 */ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;        //選擇你要設(shè)置的 IO GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;        //設(shè)置推挽輸出模式 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;                //設(shè)置傳輸速率 GPIO_Init(GPIOC,&GPIO_InitStructure);                /* 初始化 GPIO */
/*        配置 GPIO 的模式和 IO 口 */ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;        //選擇你要設(shè)置的 IO GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;        //設(shè)置推挽輸出模式 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;                //設(shè)置傳輸速率 GPIO_Init(GPIOC,&GPIO_InitStructure);                /* 初始化 GPIO */
/*        配置 GPIO 的模式和 IO 口 */ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;        //選擇你要設(shè)置的 IO GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;        //設(shè)置推挽輸出模式 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;                //設(shè)置傳輸速率 GPIO_Init(GPIOC,&GPIO_InitStructure);                /* 初始化 GPIO */
//TIM3 定時(shí)器初始化
TIM_TimeBaseInitStructure.TIM_Period = 9000;        //        不        分        頻        ,PWM        頻        率
=72000/900=8Khz//設(shè)置自動(dòng)重裝載寄存器周期的值
TIM_TimeBaseInitStructure.TIM_Prescaler = 0;//設(shè)置用來(lái)作為 TIMx 時(shí)鐘頻率預(yù)分頻值,
100Khz 計(jì)數(shù)頻率


TIM_TimeBaseInitStructure.TIM_ClockDivision = 0;//設(shè)置時(shí)鐘分割:TDTS = Tck_tim TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;        //TIM  向上
計(jì)數(shù)模式
TIM_TimeBaseInit(TIM3, & TIM_TimeBaseInitStructure);
GPIO_PinRemapConfig(GPIO_FullRemap_TIM3,ENABLE);// 改 變 指 定 管 腳 的 映 射
//pC7
//PWM 初始化        //根據(jù) TIM_OCInitStruct 中指定的參數(shù)初始化外設(shè) TIMx TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//PWM 輸出使能
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low;
TIM_OC2Init(TIM3,&TIM_OCInitStructure);
//注意此處初始化時(shí) TIM_OC2Init 而不是 TIM_OCInit,否則會(huì)出錯(cuò)。因?yàn)楣碳䦷?kù)的版 本不一樣。
TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);//使能或者失能 TIMx 在 CCR2
上的預(yù)裝載寄存器
TIM_Cmd(TIM3,ENABLE);//使能或者失能 TIMx 外設(shè)
}
void pwm2_init()
{
GPIO_InitTypeDef GPIO_InitStructure;        //聲明一個(gè)結(jié)構(gòu)體變量,用來(lái)初始化 GPIO
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;//聲明一個(gè)結(jié)構(gòu)體變量,用來(lái)初 始化定時(shí)器
TIM_OCInitTypeDef TIM_OCInitStructure;//根據(jù) TIM_OCInitStruct 中指定的參數(shù)初始 化外設(shè) TIMx
/* 開(kāi)啟時(shí)鐘 */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
/*        配置 GPIO 的模式和 IO 口 */ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//復(fù)用推挽輸出


GPIO_Init(GPIOB,&GPIO_InitStructure);
/*        配置 GPIO 的模式和 IO 口 */ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;        //選擇你要設(shè)置的 IO GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;        //設(shè)置推挽輸出模式 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;                //設(shè)置傳輸速率 GPIO_Init(GPIOC,&GPIO_InitStructure);                /* 初始化 GPIO */
/*        配置 GPIO 的模式和 IO 口 */ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;        //選擇你要設(shè)置的 IO GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;        //設(shè)置推挽輸出模式 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;                //設(shè)置傳輸速率 GPIO_Init(GPIOC,&GPIO_InitStructure);                /* 初始化 GPIO */
/*        配置 GPIO 的模式和 IO 口 */ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;        //選擇你要設(shè)置的 IO GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;        //設(shè)置推挽輸出模式 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;                //設(shè)置傳輸速率 GPIO_Init(GPIOC,&GPIO_InitStructure);                /* 初始化 GPIO */
//TIM3 定時(shí)器初始化
TIM_TimeBaseInitStructure.TIM_Period = 9000;        //        不        分        頻        ,PWM        頻        率
=72000/900=8Khz//設(shè)置自動(dòng)重裝載寄存器周期的值
TIM_TimeBaseInitStructure.TIM_Prescaler = 0;//設(shè)置用來(lái)作為 TIMx 時(shí)鐘頻率預(yù)分頻值,
100Khz 計(jì)數(shù)頻率
TIM_TimeBaseInitStructure.TIM_ClockDivision = 0;//設(shè)置時(shí)鐘分割:TDTS = Tck_tim TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;        //TIM  向上
計(jì)數(shù)模式
TIM_TimeBaseInit(TIM2, & TIM_TimeBaseInitStructure);
GPIO_PinRemapConfig(GPIO_FullRemap_TIM2,ENABLE);// 改 變 指 定 管 腳 的 映 射
//pC7
//PWM 初始化        //根據(jù) TIM_OCInitStruct 中指定的參數(shù)初始化外設(shè) TIMx TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//PWM 輸出使能
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low;
TIM_OC2Init(TIM2,&TIM_OCInitStructure);
//注意此處初始化時(shí) TIM_OC2Init 而不是 TIM_OCInit,否則會(huì)出錯(cuò)。因?yàn)楣碳䦷?kù)的版 本不一樣。


TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable);//使能或者失能 TIMx 在 CCR2
上的預(yù)裝載寄存器
TIM_Cmd(TIM2,ENABLE);//使能或者失能 TIMx 外設(shè)
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久热国产在线 | 欧美在线观看黄色 | 五月婷婷导航 | 永久看片 | 一级毛片在线播放 | 天天射夜夜操 | 99视频在线免费观看 | 国产精品成人品 | 91 中文字幕| 欧美一区2区三区4区公司二百 | 欧美激情欧美激情在线五月 | 人人做人人澡人人爽欧美 | 久久久久久成人 | 国产精品久久7777777 | 精品视频一区二区 | 成年人的视频免费观看 | 久久精品国产亚洲一区二区 | av av在线| 婷婷开心激情综合五月天 | 欧美一区二区三区久久精品 | 日韩精品一区二区三区在线观看 | 青青草视频免费观看 | 国产精品视频区 | 欧美精品一区二区在线观看 | 亚洲性人人天天夜夜摸 | 在线观看av网站 | 亚洲欧美中文日韩在线v日本 | 自拍偷拍亚洲欧美 | 亚洲成人av | 一级毛片免费视频 | 欧美在线观看一区 | 在线观看亚洲专区 | 亚洲精品视频免费观看 | 国产综合欧美 | 精品自拍视频在线观看 | 久久不卡| 欧美啪啪 | 青青草亚洲 | 欧美精品一区在线 | 91一区二区| 久久久区 |