最近做個項目,需要用PWM控制4線風(fēng)扇的速度,調(diào)試完后順便將其記錄下來.
typedef struct {
u16 pwm_change_flag;
u16 pwm_value;
}Pwm_Fan_t;
Pwm_Fan_t Pwm_Fan;
void Pwm_Param_Init(void)
{
Pwm_Fan.pwm_change_flag=0;
Pwm_Fan.pwm_value=80;
}
//PD14->TIM4_CH3
void PWM_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOD, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; // 復(fù)用推挽輸出
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
}
/****************************************************************
2017年8月14日14:37:57:cpu的風(fēng)扇是使用25Khz pwm來調(diào)制的
***************************************************************/
void TIM4_Config(u16 pwm)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
/* PWM信號電平跳變值 */
u16 CCR3;
if(pwm>160-1)
pwm=160-1;
CCR3=pwm;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
GPIO_PinAFConfig(GPIOD, GPIO_PinSource14, GPIO_AF_TIM4); //對于L系列的,這句千萬別漏掉了
TIM_Cmd(TIM4, DISABLE);
/* Time base configuration */
TIM_TimeBaseStructure.TIM_Period =160 - 1;//0xEA5F;
TIM_TimeBaseStructure.TIM_Prescaler = 8-1; //設(shè)置預(yù)分頻:預(yù)分頻=2,即為72/3=24MHz
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //設(shè)置時鐘分頻系數(shù):不分頻
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上計數(shù)溢出模式
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
/* PWM1 Mode configuration: Channel3 */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //配置為PWM模式1
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = CCR3; //設(shè)置跳變值,當(dāng)計數(shù)器計數(shù)到這個值時,電平發(fā)生跳變
TIM_OCInitStructure.TIM_OCPolarity =TIM_OCPolarity_Low; //當(dāng)定時器計數(shù)值小于CCR1時為低電平
TIM_OC3Init(TIM4, &TIM_OCInitStructure); //使能通道3
TIM_OC3PreloadConfig(TIM4, TIM_OCPreload_Enable);
TIM_ARRPreloadConfig(TIM4, ENABLE); //使能TIM4重載寄存器ARR
/* TIM4 enable counter */
TIM_Cmd(TIM4, ENABLE); //使能TIM4
}
上一篇:STM32l151低功耗芯片串口通信
下一篇:STM32L0低功耗設(shè)計4: RTC模塊1秒時鐘的產(chǎn)生方法
推薦閱讀
史海拾趣
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 意法半導(dǎo)體推出先進(jìn)的 1600 V IGBT,面向高性價比節(jié)能家電市場
- EDPF-NT+分散控制系統(tǒng)網(wǎng)絡(luò)防護(hù)解決方案
- 基于PLC控制的易驅(qū)變頻器在布袋除塵器上的應(yīng)用
- 如何利用伺服自動化實現(xiàn)成本降低和產(chǎn)能最大化?
- 壓力傳感器有哪些抗干擾措施?
- 破局!補(bǔ)盲dToF固態(tài)激光雷達(dá)輪番“出手”,禾賽FT120也要靠邊
- 利用正壓送風(fēng)壓力傳感器自動控制火災(zāi)風(fēng)口壓力
- 多個傳感器間相互位置關(guān)系校準(zhǔn)方法
- 樓宇自控BA系統(tǒng)傳感器有哪些?
- 常見壓力傳感器工業(yè)原理匯總
- 6月份產(chǎn)能利用率達(dá)111%,南京臺積電全年營收預(yù)計同比增42%
- 三星西安:二期項目第一階段預(yù)計Q3實現(xiàn)滿產(chǎn)
- 泰運(yùn)營商AIS宣布華為成為5G核心網(wǎng)絡(luò)的競標(biāo)者之一
- ASML二季度凈銷售33億歐元,毛利率達(dá)48.2%
- 總投資20億元,由福建中環(huán)牽頭的半導(dǎo)體產(chǎn)業(yè)園項目落戶江西
- 10億元中科鋼研碳化硅集成電路產(chǎn)業(yè)園項目或年內(nèi)投產(chǎn)
- 歐洲專利局撤銷了康寧兩項柔性玻璃專利
- Cambridge GaN Devices獲950萬美元A輪融資
- 基于MSP430智能小車的設(shè)計
- 手把手教你做 eZ-FET Lite仿真器