pwm.h
#ifndef _PWM_H
#define _PWM_H
#include "sys.h"
void TIM14_PWM_Init(u32 arr,u32 psc);
#endif
pwm.c
#include "pwm.h"
//TIM4 PWM部份初始化
//PWM 輸出初始化arr:自動重裝值 psc:時鐘預分頻系數
void TIM14_PWM_Init(u32 arr,u32 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14,ENABLE);//time14時鐘使能
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);//TIME14在PF9上,使能gpioF
GPIO_PinAFConfig(GPIOF,GPIO_PinSource9,GPIO_AF_TIM14);//GPF9復用為tim14
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9; //GPIOF9
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF; //復用
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz; //高速
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP; //推挽復用
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP; //上拉
GPIO_Init(GPIOF,&GPIO_InitStructure); //初始化GPIOF9
TIM_TimeBaseStructure.TIM_Prescaler=psc; //定時器分頻
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上計數模式
TIM_TimeBaseStructure.TIM_Period=arr; //自動重裝載值
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; //
TIM_TimeBaseInit(TIM14,&TIM_TimeBaseStructure); //初始化定時器14
//初始化tim14 channel1 PWM模式
//PWM 調制模式1只要 TIMx_CNT < TIMx_CCR1,通道 1 便為有效狀態,否則為無效狀態。
//可以理解為 if TIMx_CNT < TIMx_CCR1 輸出否則不輸出 計數cnt
TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//比較輸出使能
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low;//輸出極性低,因為PF9連接的LED0低電平才會亮
TIM_OC1Init(TIM14,&TIM_OCInitStructure); //初始化外設TIM1_40C1
TIM_OC1PreloadConfig(TIM14,TIM_OCPreload_Enable);//使能預裝載寄存器
TIM_ARRPreloadConfig(TIM14,ENABLE);//CT1寄存器的位7 ARPE=1,這樣ARR寄存器的內容在更新事件UEV發生時
//傳送到影子寄存器
TIM_Cmd(TIM14,ENABLE);//使能tim14
}
main.c
#include "sys.h"
#include "delay.h"
#include "pwm.h"
int main(void)
{
u16 led0pwmval=0;
u8 dir=1;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//系統優先級分組2
delay_init(168);//168 MHz
TIM14_PWM_Init(500-1,84-1);//
//定時器的頻率為84Mhz,分頻系數為84,84000000/84=1Mhz 0.000001秒 1us;
//自動重裝載值為500,定時器的周期=0.000001*500=0.0005s=500us=0.5ms,所以頻率為1000ms/0.5ms=2khz
//定時器的頻率為2Khz已經固定了
//
while(1)
{
delay_ms(10);
if(dir)
led0pwmval++;
else
led0pwmval--;
if(led0pwmval>300)dir=0; //3秒 到達300后,方向為遞減
if(led0pwmval == 0)dir=1; //到達0后,方向為遞增
TIM_SetCompare1(TIM14,led0pwmval); //修改比較值,修改占空比 此處修改CCR1為捕獲/比較寄存器的值
}
}
/*
TIM_SetCompare1(TIM14,led0pwmval)每10ms設置了CCR1寄存器的值,
計算寄存器CNT的值為0~500這個不變(上面初始化時設了) 比較寄存器CCR1的值在變
通過前面設置只要CNT
又led0pwmval從0-300然后雙從300到0,所以燈的亮度也是從低到高然后再從高到低
*/
上一篇:stm32 定時器5輸入捕獲
下一篇:STM32 KEIL MDK 本地時間和Unix timestamp相互轉換
推薦閱讀
史海拾趣
隨著電子行業的競爭日益激烈,Ambersil公司意識到,要想在市場中立足,必須注重產品質量。公司加大了對生產線的投入,引進了先進的生產設備和技術,嚴格把控產品質量。同時,公司還建立了完善的售后服務體系,及時解決客戶在使用過程中遇到的問題。這些舉措使得Ambersil公司的產品在市場上贏得了良好的口碑。
在電子行業的初期,Ambersil公司以其創新的技術和產品迅速嶄露頭角。公司研發團隊成功開發出一種高效的電子清潔劑,能夠去除電路板上的頑固污垢,提高電子設備的性能和穩定性。這一創新產品迅速獲得了市場的認可,Ambersil公司因此獲得了大量的訂單,銷售額逐年攀升。
隨著業務的不斷擴展,Continental Industries開始積極尋求全球市場機會。公司在歐洲、北美洲、南美洲和亞洲等多個地區設立了代表處或全資子公司,以更好地服務當地客戶。通過本地化運營和定制化服務,公司成功打開了多個新的市場,實現了業務的快速增長。
自成立以來,富捷電子始終將技術創新視為企業發展的核心驅動力。公司投入巨資建立了一支國際專業的晶片電阻核心技術研發團隊,專注于貼片電阻、合金電阻、車規電阻等產品的研發與生產。近年來,富捷電子成功研發出高端抗靜電汽車晶片電阻FQS系列產品,并建設了“高端抗靜電汽車晶片電阻智能工廠”,實現了從原材料入庫到成品出庫的全程智能化、自動化操作。這一創新不僅提升了產品性能,還滿足了汽車電子行業對元件高可靠性、高穩定性的嚴格要求,推動了公司在汽車電子領域的快速發展。
Echelon公司成立于上世紀80年代,最初以研發LonWorks技術為核心。LonWorks是一種網絡通信協議,用于連接各種智能設備,實現設備間的通信和協作。隨著技術的成熟,Echelon開始將LonWorks技術應用于能源管理領域,推出了基于LonWorks的能源管理服務方案。這一創新的服務方案使得Echelon在能源管理市場嶄露頭角,為公司的后續發展奠定了堅實的基礎。
迅速發展的計算機、電子、通訊技術每一年都會把更加光鮮亮麗的數碼玩具帶到你的身邊。但與此同時,也有不少曾經在我們生活中扮演過重要角色的科技產品會慢慢淡出視野。福克斯新聞日前就總結了十種曾經廣泛普及,卻又即將消亡的科技產品。 1. 有線 ...… 查看全部問答∨ |
|
數控雕銑平臺,電機的在走高于100轉/分鐘時一切正常,當畫圓換向時處于0 90 180 270 幾個角度時電機有低頻振蕩(速度為2-30轉/分鐘),聽不出來但是手摸工作臺能夠感覺出來,工件在這個振蕩點上光潔度不行,試了很多參數加了速度濾波器有點點改善, ...… 查看全部問答∨ |
|
#include \"Imaging.h\" #include #include 在頭文件添加后,編譯出現這樣的問題: 1>C:\\Program Files\\Microsoft Visual Studio 8\\SmartDevices\\SDK\\PocketPC2003\\include\\Imaging.h(28) : fatal error C1083: Cannot open include file: ...… 查看全部問答∨ |
|
WINCE5.0開拉了個CE平臺,系統起來直接自動運行程序出問題,關掉程序,再起來一個就OK了,后來仔細觀察發現CF卡的啟動總是比程序慢(一般都要1分多鐘才起來),但我程序起來的時候有一些設置放在CF卡的INI文件里面,請問那為知道怎么樣把CF卡(硬盤 ...… 查看全部問答∨ |
大多數設計者都熟悉基于Pierce(皮爾斯)柵拓撲結構的振蕩器,但很少有人真正了解它是如何工作的,更遑論如何正確的設計。我們經常看到,在振蕩器工作不正常之前,多數人是不愿付出太多精力來關注振蕩器的設計的,而此時產品通常已經量產;許多 ...… 查看全部問答∨ |
NORDIC NRF24LE1—無線促成了環法自行車賽短跑取得成功 Mark Cavendish—2011年環法自行車賽短跑冠軍,將無線肌肉電刺激作為培訓設備。 Compex Wireless是世界首個無線肌肉電刺激,Cavendish的HTC自行車隊就采用了它。 Compex采用了NORDIC無線技術,專門針對專業運動員,業余運動員和 ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 將低功耗設計進行到底——評論、轉發贏大禮!
- 芯幣競拍:感恩教師節專場
- Keysight示波器主題月有獎系列活動之 注冊大獎天天抽 搶樓踩中亦有獎
- Microchip有獎直播:VectorBlox™ SDK 報名中
- 有獎直播|ADI 慣性MEMS應用那些事
- 借助 Microchip 生態系統中的 PIC® 和 AVR® 單片機開啟嵌入式到云端之旅 系列在線研討會
- 帶你零起點入門STM32(專為嵌入式應用而開發的內核)
- 福祿克首款熱成像萬用表Fluke-279FC 即將上市!填寫問卷贏好禮嘍!
- EEWorld Datasheet 伴你同行!快來領取200芯積分福利啦~
- 泰克福袋:示伴功倍,萬能福袋派送中