1.PWM簡介
脈沖寬度調制(PWM)是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術。簡單來說,就是對脈沖寬度的控制,原理圖如下:
當CNT 這里我們使用STM32F4的TIM14的CH1產生一路PWM輸出。 值得一提的是控制PWM的三個寄存器:捕獲/比較模式寄存器(TIMx_CCMR1/2),捕獲/比較使能寄存器(TIMx_CCER),捕獲/比較寄存器(TIMx_CCR1~4)。這三個寄存器針對不同的定時器不同的輸出模式設置各不相同,具體可參見STM32中文參考手冊16節 使用PWM與使用定時器的功能實際上使類似的。 1)開啟TIM14和GPIO時鐘,配置PF9選擇復用功能AF9(TIM14)輸出。 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14,ENABLE); //TIM14 時鐘使能 GPIO_PinAFConfig(GPIOF,GPIO_PinSource9,GPIO_AF_TIM14); //GPIOF9 復用為定時器 14 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //復用功能 2)初始化TIM14,設置TIM14的ARR和PSC等參數。 TIM_TimeBaseStructure.TIM_Period = arr; //設置自動重裝載值 TIM_TimeBaseStructure.TIM_Prescaler =psc; //設置預分頻值 TIM_TimeBaseStructure.TIM_ClockDivision = 0; //設置時鐘分割:TDTS = Tck_tim TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上計數模式 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根據指定的參數初始化 TIMx 的 3)設置TIM14_CH1的PWM模式,使能TIM14的CH1輸出。 在庫函數中,PWM通道的設置是通過函數TIM_OC1Init()~TIM_OC4Init()來設置的,不同的通道設置不一樣,這里我們使用的是通道1,所以使用的函數是TIM_OC1Init()。 TIM_OCInitTypeDef TIM_OCInitStructure; TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //選擇模式 PWM TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比較輸出使能 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //輸出極性低 TIM_OC1Init(TIM14, &TIM_OCInitStructure); //根據 T指定的參數初始化外設 TIM1 4OC1 4)使能TIM14. TIM_Cmd(TIM14, ENABLE); //使能 TIM14 5)修改TIM14_CCR1來控制占空比。 void TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare2); 2.呼吸燈設計 int main(void) { u16 led0pwmval=0; u8 dir=1; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置系統中斷優先級分組 2 delay_init(168); //初始化延時函數 uart_init(115200);//初始化串口波特率為 115200 TIM14_PWM_Init(500-1,84-1); //定時器時鐘為 84M,分頻系數為 84,所以計數頻率 //為 84M/84=1Mhz,重裝載值 500,所以 PWM 頻率為 1M/500=2Khz. while(1) { delay_ms(10); if(dir)led0pwmval++;//dir==1 led0pwmval 遞增 else led0pwmval--; //dir==0 led0pwmval 遞減 if(led0pwmval>300)dir=0;//led0pwmval 到達 300 后,方向為遞減 if(led0pwmval==0)dir=1; //led0pwmval 遞減到 0 后,方向改為遞增 TIM_SetCompare1(TIM14,led0pwmval); //修改比較值,修改占空比 } } 通過程序我們可以看到,我們通過修改led0pwmval的值來改變占空比,來實現呼吸燈。當占空比高的時候,LED燈點亮的時間長,顯得就亮,反之則暗,利用依次遞增遞減就可以實現呼吸的效果。
上一篇:STM8S003F3 使用TIM1_CH1與TIM1_CH2配置PWM輸出
下一篇:關于Stm8庫函數使用需要格外注意的地方
推薦閱讀
史海拾趣
近年來,All Sensors通過與深圳電通緯創微電子股份有限公司的合作,成立了中美合資企業——深圳華美澳通傳感器有限公司。這一合資企業的成立,不僅加強了All Sensors在中國市場的地位,也為其在全球范圍內的業務拓展提供了有力支持。華美澳通公司利用All Sensors的專利技術,專業從事MEMS壓力傳感器及應用模組的研發、生產及銷售,為電子行業提供了更多優質的產品和服務。
隨著業務的發展,ABECO在1970年做出了一個大膽的決定——進軍馬耳他市場。這一決策既帶來了挑戰,也帶來了機遇。公司需要適應新的市場環境,了解當地的需求和文化。經過一段時間的摸索和努力,ABECO憑借其高品質的產品和專業的服務,成功在馬耳他市場打開了局面,為后續的發展奠定了堅實的基礎。
除了無線耳機和太陽能領域,BRIGHT公司還在健康技術領域取得了重要的突破。他們成功籌集了60萬美元的資金,用于推動健康技術的持續增長和擴張。這筆資金使得BRIGHT公司能夠在其成功的基礎上,進一步研發和推廣基于科學的認知健康解決方案。他們的產品,如40赫茲燈,無需醫生處方即可普遍使用,為廣大消費者提供了更加便捷和科學的健康管理方式。
隨著全球對環保意識的不斷提高,Delphi Connection Systems公司也積極響應環保號召,致力于研發和生產環保型連接器產品。公司采用環保材料和工藝,減少生產過程中的污染排放,同時推出可回收、可再利用的連接器產品。這一舉措不僅符合了環保要求,也為客戶提供了更加環保的解決方案。
隨著無線通信技術的快速發展,明波通信緊跟時代步伐,不斷投入研發力量,在無線/移動通信領域取得了重大技術突破。公司成功開發出了一系列大規模集成電路(IP/ASIC)及相關控制軟件,不僅提高了通信效率和質量,也贏得了國內外客戶的廣泛認可。這一時期的明波通信,已經成為國內通信行業的佼佼者。
隨著無線通信技術的快速發展,明波通信緊跟時代步伐,不斷投入研發力量,在無線/移動通信領域取得了重大技術突破。公司成功開發出了一系列大規模集成電路(IP/ASIC)及相關控制軟件,不僅提高了通信效率和質量,也贏得了國內外客戶的廣泛認可。這一時期的明波通信,已經成為國內通信行業的佼佼者。
職場,亦如江湖。 猶記得當年涉世之初,對待每接觸的一個人每一件事物的態度仍像課 常上聽 老師的課,把一切看似自己學習的對象,謙恭有禮不夠勢必要做到唯唯諾諾才算是后輩新手應有的本分。 幾年過去,當年別人眼中的新人也成了別人眼中的前輩, ...… 查看全部問答∨ |
|
單片機溫度采集+VB溫度顯示 本溫度采集系統是利用DS18B20把溫度讀出,然后通過單片機解碼發送給6位數碼管,數碼管顯示出當前的溫度值。DS18B20返回的溫度值是兩字節的十六進制數據。負數用反碼表示。單片機直接通過串口 ...… 查看全部問答∨ |
|
模塊的ioctl段的定義函數是: int camif_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) { camif_cfg_t *cfg = file->private_data; struct ...… 查看全部問答∨ |
wincepb50-051231-product-update-rollup-armv4i wincepb50-061231-product-update-rollup-armv4i wincepb50-071231-product-update-rollup-armv4i 這3個補丁依次包含嗎? 是不是打07的以后就不用打上面2個了… 查看全部問答∨ |
用核心板做一款機器,最后做電源管理才發現PWREN給懸空了,且VDDi,VDDiarm和VDDalive一起供電,休眠省電基本不用想了,現在我想僅靠降低CLOCK時鐘降低功耗,比如進入SLOW模式,能將2440電流降低到多少?哪位試驗過? 另外在wince系統運行時候轉換n ...… 查看全部問答∨ |
請問一下有沒有正在使用VHDL語言的嗎?我想請教一下問題,用VHDL編寫一個程序后,再運行,會生成一個項目符號 , 在圖形輸入文件中如何才能調用它啊? 有誰知道的給指點一下,謝謝!!… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 試用Vishay新型“IHLP磁芯損耗計算器”,搶樓贏好禮
- LPC4370重磅來襲 有獎問答贏好禮!
- 電子工程師,如何更好地擁抱GaN?參與問卷有好禮!
- 報名贏京東卡 | 國產FPGA安路科技2024線上新品發布會
- 兆易GD32450I-EVAL免費測評試用
- 追更有驚喜:解救被FSM折磨過的你,justd0解析LSM6DSOX有限狀態機官方例程
- 電路圖站2.0版上線,公開征集網友建議,填寫調查問卷贏積分!
- 全球首款Cortex-M23內核物聯網芯片SAML10和SAM L11系列 闖關獲取SAML10/SAML11法寶,拆除電子界安全危機,贏好禮!
- 邀請好友體驗WEBENCH,禮品豐厚你有他也有!