實驗過程中的筆記 在持續更新中 只是一個簡化版本
利用定時器1 2 3 4 配置的PWM輸出
PWM輸出注意外部接入的高電平還是低電平 注意修改
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //輸出極性:TIM輸出比較極性高TIM_OCPolarity_High 接高電平極性為高 接低電平輸出極性為低TIM_OCPolarity_Low
//定時器3 ,輸出TIM3 CH2的PWM脈沖波形 GPIOB.5 重映射的端口remap
void pwm_tim3()
{
u16 led0pwmval=0;
u8 dir=1;
delay_ms(10);
if(dir)led0pwmval++;
else led0pwmval--;
if(led0pwmval>300)dir=0;
if(led0pwmval==0)dir=1;
TIM_SetCompare2(TIM3,led0pwmval); //占空比定義函數
}
//定時器2 ,輸出TIM2 CH1的PWM脈沖波形 GPIOA.0 沒有重映射
void pwm_tim2()
{
u16 led0pwmval=0;
u8 dir=1;
delay_ms(10);
if(dir)led0pwmval++;
else led0pwmval--;
if(led0pwmval>300)dir=0;
if(led0pwmval==0)dir=1;
TIM_SetCompare1(TIM2,led0pwmval); //占空比定義函數
}
#include "timer.h"
#include "led.h"
#include "usart.h"
//////////////////////////////////////////////////////////////////////////////////
//本程序只供學習使用,未經作者許可,不得用于其它任何用途
//ALIENTEK戰艦STM32開發板
//定時器 驅動代碼
//正點原子@ALIENTEK
//技術論壇:www.openedv.com
//修改日期:2012/9/4
//版本:V1.1
//版權所有,盜版必究。
//Copyright(C) 廣州市星翼電子科技有限公司 2009-2019
//All rights reserved
//********************************************************************************
//V1.1 20120904
//1,增加TIM3_PWM_Init函數。
//2,增加LED0_PWM_VAL宏定義,控制TIM3_CH2脈寬
//////////////////////////////////////////////////////////////////////////////////
//通用定時器3中斷初始化
//這里時鐘選擇為APB1的2倍,而APB1為36M
//arr:自動重裝值。
//psc:時鐘預分頻數
//這里使用的是定時器3!
void TIM3_Int_Init(u16 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //時鐘使能
TIM_TimeBaseStructure.TIM_Period = arr; //設置在下一個更新事件裝入活動的自動重裝載寄存器周期的值 計數到5000為500ms
TIM_TimeBaseStructure.TIM_Prescaler =psc; //設置用來作為TIMx時鐘頻率除數的預分頻值 10Khz的計數頻率
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //設置時鐘分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上計數模式
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根據TIM_TimeBaseInitStruct中指定的參數初始化TIMx的時間基數單位
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中斷,允許更新中斷
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3中斷
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占優先級0級
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //從優先級3級
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
NVIC_Init(&NVIC_InitStructure); //根據NVIC_InitStruct中指定的參數初始化外設NVIC寄存器
TIM_Cmd(TIM3, ENABLE); //使能TIMx外設
}
//定時器3中斷服務程序
void TIM3_IRQHandler(void) //TIM3中斷
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //檢查指定的TIM中斷發生與否:TIM 中斷源
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx的中斷待處理位:TIM 中斷源
LED1=!LED1;
}
}
//TIM4 PWM部分初始化
//PWM輸出初始化 PB6 沒有映射
//arr:自動重裝值
//psc:時鐘預分頻數
void TIM4_PWM_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); //使能定時器4時鐘
//RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); //使能GPIO外設和AFIO復用功能模塊時鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE); //使能GPIO外設和AFIO復用功能模塊時鐘
//GPIO_PinRemapConfig(GPIO_PartialRemap_TIM2, ENABLE); //Timer2部分重映射 TIM4_CH1->PB6 沒有映射
//設置該引腳為復用輸出功能,輸出TIM4 CH1的PWM脈沖波形 GPIOB.6 沒有映射 重映射的端口remap
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //TIM_CH1
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //復用推挽輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO PB.6
//GPIO_SetBits(GPIOB,GPIO_Pin_6); //PB.6 輸出高
//初始化TIM4
TIM_TimeBaseStructure.TIM_Period = arr; //設置在下一個更新事件裝入活動的自動重裝載寄存器周期的值
TIM_TimeBaseStructure.TIM_Prescaler =psc; //設置用來作為TIMx時鐘頻率除數的預分頻值
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //設置時鐘分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上計數模式
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); //根據TIM_TimeBaseInitStruct中指定的參數初始化TIMx的時間基數單位
//初始化TIM2 Channel2 PWM模式
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //選擇定時器模式:TIM脈沖寬度調制模式2
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比較輸出使能
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //輸出極性:TIM輸出比較極性高TIM_OCPolarity_High 接高電平極性為高 接低電平輸出極性為低TIM_OCPolarity_Low
TIM_OC1Init(TIM4, &TIM_OCInitStructure); //根據T指定的參數初始化外設TIM4 CH1 TIM_OC1PreloadConfig
// CH1的PWM脈沖波形
TIM_CtrlPWMOutputs(TIM4,ENABLE); //⑤MOE 主輸出使能 非高級定時器可省略
TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable); //使能TIM4在CCR1上的預裝載寄存器 TIM4 CH1
TIM_ARRPreloadConfig(TIM4, ENABLE); //使能 TIMx 在 ARR 上的預裝載寄存器 非高級定時器可省略
TIM_Cmd(TIM4, ENABLE); //使能TIM4
}
//TIM3 PWM部分初始化
//PWM輸出初始化
//arr:自動重裝值
//psc:時鐘預分頻數
void TIM3_PWM_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能定時器3時鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); //使能GPIO外設和AFIO復用功能模塊時鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE); //使能GPIO外設和AFIO復用功能模塊時鐘
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); //Timer3部分重映射 TIM3_CH2->PB5 PC7
//設置該引腳為復用輸出功能,輸出TIM3 CH2的PWM脈沖波形 GPIOB.5 重映射的端口remap
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //TIM_CH2
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //復用推挽輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO
//設置該引腳為復用輸出功能,輸出TIM3 CH2的PWM脈沖波形 GPIOC.7 重映射的端口remap
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; //TIM_CH2
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //復用推挽輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化GPIO
//初始化TIM3
TIM_TimeBaseStructure.TIM_Period = arr; //設置在下一個更新事件裝入活動的自動重裝載寄存器周期的值
TIM_TimeBaseStructure.TIM_Prescaler =psc; //設置用來作為TIMx時鐘頻率除數的預分頻值
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //設置時鐘分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上計數模式
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根據TIM_TimeBaseInitStruct中指定的參數初始化TIMx的時間基數單位
//初始化TIM3 Channel2 PWM模式
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //選擇定時器模式:TIM脈沖寬度調制模式2
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比較輸出使能
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //輸出極性:TIM輸出比較極性高
TIM_OC2Init(TIM3, &TIM_OCInitStructure); //根據T指定的參數初始化外設TIM3 OC2
TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能TIM3在CCR2上的預裝載寄存器
TIM_Cmd(TIM3, ENABLE); //使能TIM3
}
//TIM2 PWM部分初始化
//PWM輸出初始化
//arr:自動重裝值
//psc:時鐘預分頻數
void TIM2_PWM_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
上一篇:stm32的引腳配置
下一篇:STM32F1系列之常用外設說明
推薦閱讀
史海拾趣
隨著業務的不斷擴展,Belden公司于1910年搬遷至芝加哥更大的區域,并在產品線上增加了橡膠絕緣電線。這一舉措不僅擴大了公司的生產規模,也進一步豐富了產品種類,滿足了市場的多樣化需求。隨后,百通工程師于1927年發明的軟橡膠塞技術,進一步推動了公司的技術創新和業務拓展。
1902年,Joseph C. Belden在美國伊利諾伊州芝加哥創立了Belden公司。在創立初期,公司主要生產電線和電纜產品,并逐漸在行業內嶄露頭角。1905年,經過大量的實驗和研究,Belden公司成功研發出“Beldenamel”絕緣材料,這種靈活的搪瓷絕緣材料極大地提升了線纜的性能和可靠性,為公司的早期發展奠定了堅實的基礎。
為了保持技術領先地位,Globaltech持續加大研發投入,建立了先進的研發中心和測試實驗室。公司不斷引進國內外頂尖的研發人才,并與多所知名高校和研究機構建立產學研合作關系。這些努力使得Globaltech在電源管理IC領域取得了多項技術突破,并成功拓展了產品線,涵蓋了ESD保護器件、MOSFET等多個領域。這些新產品不僅豐富了公司的產品線,也為客戶提供了更加全面的解決方案。
近年來,電子行業經歷了深刻的變革,新興技術的不斷涌現給Bedford Opto公司帶來了前所未有的挑戰。然而,公司憑借敏銳的市場洞察力和靈活的戰略調整,成功應對了這些變革。通過加大研發投入,積極引進新技術,公司不斷推出新產品,保持了市場競爭優勢。
在過去的四十年中,Hammond將業務重心擴展到了美國和國際市場。通過在全球各地設立辦事處和建立分銷網絡,Hammond成功地將其產品和服務推廣到了世界各地。這一戰略轉型不僅極大地提升了Hammond的品牌影響力,還為其帶來了更加廣闊的市場空間和增長潛力。
隨著電子行業的不斷發展和市場需求的日益多樣化,Flextronics(Flexxon Pte Ltd)開始實施多元化戰略,積極拓展新的業務領域。公司不僅繼續深耕消費電子、通信設備等傳統市場,還積極涉足汽車電子、醫療電子、物聯網等新興領域。通過并購、合作等多種方式,Flextronics不斷拓寬產品線和服務范圍,為客戶提供更加全面和專業的解決方案。這一戰略調整不僅為公司帶來了新的增長點,也進一步提升了公司的市場競爭力。
一個單片機應用系統的硬件電路設計包含兩部分內容:一是系統擴展,即單片機內部的功能單元,如ROM、RAM、I/O、定時器/計數器、中斷系統等不能滿足應用系統的要求時,必須在片外進行擴展,選擇適當的芯片,設計相應的電路。二是系統的配置,即按照系 ...… 查看全部問答∨ |
|
長虹SF2115彩電伴音小,將音量開至最大位置(數碼100)也只能聽見微弱的聲音 對于伴音小的故障快速的修理方法是AV輸入法,即輸入AV信號確認故障范圍,若輸入AV信號聲音正常說明故障在中放電路(包括圖像中放和伴音解調電路),若輸入AV信號聲音還是不正常,說明故障在功放電路或TV/AV切 換電路。 基于以上的檢修思路,首先輸 ...… 查看全部問答∨ |
對于Solder Mask Layers 和Paste Mask layers這個兩個概念,有很多初學者不太理解這兩個層的概念,因為它們的確有一些相似的地方,就自己的看法說說,貢大家參考: Solder Mask Layers:即阻焊層,就是PCB板上焊盤(表面貼焊盤、插件焊盤、過孔) ...… 查看全部問答∨ |
如題, 大家別拿contents里面的內容截過來一貼就結束了。那里面我也看過了,就是不不知道怎么編譯進去。 我現在是照著contents里面的內容做的 里面提到 in the %_WINCEROOT%\\Public\\Ie\\Oak\\Lib\\<Hardware Platform> folders. To add t ...… 查看全部問答∨ |
如何在IRP_MJ_CREATE中修改創建文件的路徑???急急! 在文件系統過濾驅動中,過濾RIP_MJ_CREATE得到文件的創建路徑(PFILE_OBJECT file = irpsp->FileObject 取得),我想更改這個路徑,如C:\\a.txt 改為D:\\myDirectory\\b.txt。我試了很多方法都不成功.請高手指點指點啊,小弟不勝感激?。。?!… 查看全部問答∨ |
我公司因業務拓展需要,急聘wince應用程序開發工程師 要求熟悉Wince5.0 有VC /EVC開發經驗 有意者請發簡歷到email:senses531@163.com… 查看全部問答∨ |
在s3c2410下程序是一定要下到0x30200000這里么?我自己修改了一個ucos的程序,下到芯片,但是指定的地址是從0開始,結果跑錯了,然后就一直不能再下載其他程序了,請問應該怎么修正這個錯誤。 原因可能是:我查了下,下載程序時總是 ...… 查看全部問答∨ |