timer.h
#ifndef _TIM5SANP_H
#define _TIM5SANP_H
#include "sys.h"
void TIM14_PWM_Init(u32 arr,u32 psc);
void TIM5_CH1_Cap_Init(u32 arr,u16 psc);
#endif
timer.c
#include "timer.h"
TIM_ICInitTypeDef TIM5_ICInitStructre;
void TIM5_CH1_Cap_Init(u32 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE);//TIM5時(shí)鐘使能
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);//GPIOA時(shí)鐘使能
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
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_DOWN;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource0,GPIO_AF_TIM5); //PA0復(fù)用tim5
TIM_TimeBaseStructure.TIM_Prescaler=psc; //定時(shí)器分頻
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上計(jì)數(shù)模式
TIM_TimeBaseStructure.TIM_Period=arr; //自動重裝載值
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; //配置輸入分頻,不分頻
TIM_TimeBaseInit(TIM5,&TIM_TimeBaseStructure); //
//#define TIM_Channel_1 ((uint16_t)0x0000)
//
//#define TIM_ICSelection_DirectTI ((uint16_t)0x0001)
// TIM Input 1, 2, 3 or 4 is selected to be connected to IC1, IC2, IC3 or IC4, respectively
//TIM5_CCMR1寄存器
//位 1:0 CC1S:捕獲/比較 1 選擇 (Capture/Compare 1 selection)
//此位域定義通道方向(輸入/輸出)以及所使用的輸入。
//00: CC1 通道配置為輸出。
//01: CC1 通道配置為輸入, IC1 映射到 TI1 上。
//書本178頁 或中文參考434頁
TIM5_ICInitStructre.TIM_Channel=TIM_Channel_1; //選擇輸入端IC1映射到TI1
TIM5_ICInitStructre.TIM_ICPolarity=TIM_ICPolarity_Rising; //上升沿捕獲
TIM5_ICInitStructre.TIM_ICSelection=TIM_ICSelection_DirectTI;//映射到TI1上
TIM5_ICInitStructre.TIM_ICPrescaler=TIM_ICPSC_DIV1; //配置輸入分頻,不分頻
TIM5_ICInitStructre.TIM_ICFilter=0x00; //配置輸入濾波器不濾波
TIM_ICInit(TIM5,&TIM5_ICInitStructre); //初始化TIM5輸入捕獲參數(shù)
TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE); //允許更新和捕獲中斷
TIM_Cmd(TIM5,ENABLE); //使能定時(shí)器5
NVIC_InitStructure.NVIC_IRQChannel=TIM5_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
//捕獲狀態(tài)
//[7]:0,沒有成功的捕獲,1,成功捕獲到1次
//[6]:0,還沒捕獲到低電平;1,已經(jīng)捕獲到低電平了
//[5:0]:捕獲低電平后溢出的次數(shù)(對于32位定時(shí)器來說,1us計(jì)數(shù)器加1,溢出時(shí)間:4294s)
u8 TIM5CH1_CAPTURE_STA=0;//輸入捕獲狀態(tài)
u32 TIM5CH1_CAPTURE_VAL; //輸入捕獲值(TIM2/TIM5是32位)
//定時(shí)器5中斷服務(wù)程序
void TIM5_IRQHandler(void)
{
if((TIM5CH1_CAPTURE_STA & 0x80)==0) //還未成功捕獲
{
if(TIM_GetITStatus(TIM5,TIM_IT_Update) != RESET)//溢出
{
if(TIM5CH1_CAPTURE_STA & 0x40) //已經(jīng)捕獲到高電平了
{
if((TIM5CH1_CAPTURE_STA & 0X3F)==0X3F) //高電平太長了
{
TIM5CH1_CAPTURE_STA |= 0X80; //標(biāo)記成功捕獲了一次
TIM5CH1_CAPTURE_VAL=0XFFFFFFFF;
}
else
TIM5CH1_CAPTURE_STA++;
}
}
if(TIM_GetITStatus(TIM5,TIM_IT_CC1) != RESET) //捕獲1發(fā)生捕獲事件
{
if(TIM5CH1_CAPTURE_STA & 0x40) //捕獲到一個(gè)下降下沿
{
TIM5CH1_CAPTURE_STA |= 0X80; //標(biāo)記成功捕獲了一次高電平脈寬
TIM5CH1_CAPTURE_VAL=TIM_GetCapture1(TIM5);//獲取當(dāng)前的捕獲值
TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Rising);//設(shè)置上升沿捕獲
}
else //還未開始,第一次捕獲了上升沿
{
TIM5CH1_CAPTURE_STA=0; //清空
TIM5CH1_CAPTURE_VAL=0;
TIM5CH1_CAPTURE_STA |=0x40; //標(biāo)記捕獲了上升沿
TIM_Cmd(TIM5,ENABLE);
TIM_SetCounter(TIM5,0); //計(jì)數(shù)器清空
TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling); //設(shè)置下降沿捕獲
TIM_Cmd(TIM5,ENABLE); //使能定時(shí)器5
}
}
}
TIM_ClearITPendingBit(TIM5,TIM_IT_CC1|TIM_IT_Update); //清除中斷標(biāo)志位
}
/*
程序思路:
TIM5CH1_CAPTURE_STA:用來記錄捕獲狀態(tài)
TIM5CH1_CAPTURE_STA=0x40 第7位為1說明捕獲到高電平
TIM5CH1_CAPTURE_STA的bit7 第8位為1說明捕獲完成了
TIM5CH1_CAPTURE_STA的[5:0]是記錄溢出次數(shù)
第一次進(jìn)入中斷
開始時(shí)TIM5CH1_CAPTURE_STA=0;必然會進(jìn)入這個(gè)if
if((TIM5CH1_CAPTURE_STA & 0x80)==0)
1.如果在捕獲到高電平前溢出了,則溢出部份不處理
2.如果在捕獲高電平之后TIM5CH1_CAPTURE_STA++;
如果捕獲1發(fā)生捕獲事件,計(jì)數(shù)器清0,TIM5CH1_CAPTURE_STA=0x40 (0100 0000),改成下降沿捕獲
第N次進(jìn)入中斷
如果前面已經(jīng)捕獲了上升沿,
TIM5CH1_CAPTURE_STA |= 0X80; //標(biāo)記成功捕獲了一次高電平脈寬
TIM5CH1_CAPTURE_VAL=TIM_GetCapture1(TIM5);//獲取當(dāng)前的捕獲值
TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Rising);//設(shè)置上升沿捕獲
*/
main.c
#include "sys.h"
#include "delay.h"
#include "timer.h"
#include "usart.h"
extern u8 TIM5CH1_CAPTURE_STA;//輸入捕獲狀態(tài)
extern u32 TIM5CH1_CAPTURE_VAL; //輸入捕獲值(TIM2/TIM5是32位)
int main(void)
{
//long long是屬于int型, 一般來講, 是long int型大小的兩倍, int型的4倍.
long long temp=0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
delay_init(168);
uart_init(115200);
TIM5_CH1_Cap_Init(0XFFFFFFFF,84-1);
//84Mhz 84分頻為1Mhz 一個(gè)周期是1us
//自動重裝載值取到最大2的32次方-1 約4294.96秒才會溢出
while(1)
{
if(TIM5CH1_CAPTURE_STA & 0x80)
{
temp=TIM5CH1_CAPTURE_STA & 0x3f;//取到溢出次數(shù)通常為0因?yàn)楹苌儆心艹?294.96秒
temp *=0XFFFFFFFF; //溢出一次時(shí)間加上0XFFFFFFFF us
temp +=TIM5CH1_CAPTURE_VAL; //得到總的高電平時(shí)間和 一次剛好是1us
printf("高電平的時(shí)間為:%lld us rn",temp);
TIM5CH1_CAPTURE_STA=0;//下一次捕獲開啟
}
}
}
上一篇:STM32 讀寫保護(hù)功能及設(shè)置
下一篇:stm32 time4 pwm
推薦閱讀
史海拾趣
技術(shù)創(chuàng)新一直是Delta的核心競爭力。多年來,公司不斷投入研發(fā)資源,推動技術(shù)創(chuàng)新和產(chǎn)品升級。Delta的工程師團(tuán)隊(duì)致力于電源技術(shù)的研發(fā),成功推出了一系列具有領(lǐng)先技術(shù)水平的電源產(chǎn)品,如高效能轉(zhuǎn)換器、智能電源管理系統(tǒng)等。這些產(chǎn)品不僅滿足了市場的多樣化需求,也推動了電源行業(yè)的技術(shù)進(jìn)步。
艾譜科公司始終將產(chǎn)品質(zhì)量放在首位。公司建立了嚴(yán)格的質(zhì)量管理體系,從原材料采購到生產(chǎn)制造的每一個(gè)環(huán)節(jié)都進(jìn)行嚴(yán)格的質(zhì)量控制。同時(shí),艾譜科還注重售后服務(wù),為客戶提供全方位的技術(shù)支持和解決方案。這種對品質(zhì)的執(zhí)著追求,贏得了客戶的信任和好評,也為公司的長期發(fā)展提供了有力保障。
隨著公司業(yè)務(wù)的不斷發(fā)展,益升華(Essentra)公司意識到海外市場的重要性。于是,公司開始積極拓展海外市場,通過設(shè)立海外分公司、與當(dāng)?shù)仄髽I(yè)合作等方式,將產(chǎn)品推向全球。在拓展海外市場的過程中,益升華(Essentra)公司始終堅(jiān)持品質(zhì)第一的原則,贏得了海外客戶的信賴和好評。如今,公司的工業(yè)零部件全球網(wǎng)絡(luò)已覆蓋23個(gè)國家或地區(qū),成為國際知名的塑料及金屬零部件生產(chǎn)商和銷售商。
隨著電子行業(yè)的全球化趨勢日益明顯,Caliber公司積極實(shí)施國際化戰(zhàn)略,拓展海外市場。公司通過與國外知名企業(yè)的合作,引進(jìn)先進(jìn)的技術(shù)和管理經(jīng)驗(yàn),不斷提升自身的競爭力。同時(shí),Caliber還積極參加國際電子展會和論壇,加強(qiáng)與國際同行的交流與合作。這些舉措不僅為公司帶來了更多的商業(yè)機(jī)會,也提升了Caliber在國際上的知名度和影響力。
隨著電子行業(yè)的快速發(fā)展和市場競爭的加劇,AC Photonics Inc也面臨著諸多挑戰(zhàn)。然而,公司始終保持著敏銳的市場洞察力和應(yīng)變能力。在面對行業(yè)變革和技術(shù)升級時(shí),公司能夠及時(shí)調(diào)整戰(zhàn)略方向,加大研發(fā)投入,推出更具競爭力的新產(chǎn)品。同時(shí),公司還積極探索新的商業(yè)模式和市場機(jī)會,為未來的發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
以上五個(gè)故事均是基于一般性的電子行業(yè)發(fā)展模式虛構(gòu)的,旨在展示AC Photonics Inc公司可能的發(fā)展路徑和經(jīng)歷。實(shí)際情況可能有所不同,具體細(xì)節(jié)需要參考公司的官方資料和歷史記錄。
面對日益激烈的市場競爭,CPI意識到單純的產(chǎn)品創(chuàng)新已經(jīng)不足以支撐公司的持續(xù)發(fā)展。于是,公司開始著手進(jìn)行產(chǎn)業(yè)鏈整合,通過收購、兼并等方式,將上下游相關(guān)企業(yè)納入自己的業(yè)務(wù)體系。這一舉措不僅加強(qiáng)了CPI在產(chǎn)業(yè)鏈中的話語權(quán),還提高了公司的生產(chǎn)效率和成本控制能力。通過整合產(chǎn)業(yè)鏈資源,CPI成功打造了一個(gè)高效、協(xié)同的供應(yīng)鏈體系,為公司的長遠(yuǎn)發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
迅速發(fā)展的計(jì)算機(jī)、電子、通訊技術(shù)每一年都會把更加光鮮亮麗的數(shù)碼玩具帶到你的身邊。但與此同時(shí),也有不少曾經(jīng)在我們生活中扮演過重要角色的科技產(chǎn)品會慢慢淡出視野。福克斯新聞日前就總結(jié)了十種曾經(jīng)廣泛普及,卻又即將消亡的科技產(chǎn)品。 1. 有線 ...… 查看全部問答∨ |
|
伺服電機(jī)在數(shù)控機(jī)床上出現(xiàn)的問題求助! 數(shù)控雕銑平臺,電機(jī)的在走高于100轉(zhuǎn)/分鐘時(shí)一切正常,當(dāng)畫圓換向時(shí)處于0 90 180 270 幾個(gè)角度時(shí)電機(jī)有低頻振蕩(速度為2-30轉(zhuǎn)/分鐘),聽不出來但是手摸工作臺能夠感覺出來,工件在這個(gè)振蕩點(diǎn)上光潔度不行,試了很多參數(shù)加了速度濾波器有點(diǎn)點(diǎn)改善, ...… 查看全部問答∨ |
|
#include \"Imaging.h\" #include #include 在頭文件添加后,編譯出現(xiàn)這樣的問題: 1>C:\\Program Files\\Microsoft Visual Studio 8\\SmartDevices\\SDK\\PocketPC2003\\include\\Imaging.h(28) : fatal error C1083: Cannot open include file: ...… 查看全部問答∨ |
|
wince 下關(guān)于CF卡的啟動速度設(shè)置 WINCE5.0開拉了個(gè)CE平臺,系統(tǒng)起來直接自動運(yùn)行程序出問題,關(guān)掉程序,再起來一個(gè)就OK了,后來仔細(xì)觀察發(fā)現(xiàn)CF卡的啟動總是比程序慢(一般都要1分多鐘才起來),但我程序起來的時(shí)候有一些設(shè)置放在CF卡的INI文件里面,請問那為知道怎么樣把CF卡(硬盤 ...… 查看全部問答∨ |
避免stm32rtc晶振不能起振的設(shè)計(jì)參考 大多數(shù)設(shè)計(jì)者都熟悉基于Pierce(皮爾斯)柵拓?fù)浣Y(jié)構(gòu)的振蕩器,但很少有人真正了解它是如何工作的,更遑論如何正確的設(shè)計(jì)。我們經(jīng)常看到,在振蕩器工作不正常之前,多數(shù)人是不愿付出太多精力來關(guān)注振蕩器的設(shè)計(jì)的,而此時(shí)產(chǎn)品通常已經(jīng)量產(chǎn);許多 ...… 查看全部問答∨ |
什么時(shí)候搞個(gè)MSP-FET430UIF的團(tuán)購呀 什么時(shí)候搞個(gè)MSP-FET430UIF的團(tuán)購呀 官網(wǎng)報(bào)價(jià)是99美刀。。。再加上關(guān)稅。。。。論壇可以考慮搞個(gè)團(tuán)購不。。。… 查看全部問答∨ |
NORDIC NRF24LE1—無線促成了環(huán)法自行車賽短跑取得成功 Mark Cavendish—2011年環(huán)法自行車賽短跑冠軍,將無線肌肉電刺激作為培訓(xùn)設(shè)備。 Compex Wireless是世界首個(gè)無線肌肉電刺激,Cavendish的HTC自行車隊(duì)就采用了它。 Compex采用了NORDIC無線技術(shù),專門針對專業(yè)運(yùn)動員,業(yè)余運(yùn)動員和 ...… 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 面壁智能端側(cè)大模型首日上線,英特爾工程師聯(lián)合優(yōu)化實(shí)現(xiàn)2.2倍推理效率躍升
- 瞄準(zhǔn)車規(guī)級碳化硅,理想發(fā)表重要成果
- 車規(guī)級MCU國內(nèi)替代提速
- 博世新獲國內(nèi)頭部車企座艙域控項(xiàng)目定點(diǎn)
- 首款測量電動汽車電機(jī)溫度的傳感器問世,提升對磁鐵的保護(hù)以減少稀土的使用
- Arm開發(fā)出計(jì)算子系統(tǒng) 以加速汽車設(shè)計(jì)的下一代AI芯片的開發(fā)
- 福特汽車申請新專利 或?qū)崿F(xiàn)車庫定向音樂播放
- 泊車場景一定需要超聲波嗎?
- 同星新一代TC1055 Pro開啟車載網(wǎng)絡(luò)測試新時(shí)代
- 福特汽車申請新專利 或?qū)⑴鋫浒踩ㄗ粉櫹到y(tǒng)
- 將低功耗設(shè)計(jì)進(jìn)行到底——評論、轉(zhuǎn)發(fā)贏大禮!
- 芯幣競拍:感恩教師節(jié)專場
- Keysight示波器主題月有獎(jiǎng)系列活動之 注冊大獎(jiǎng)天天抽 搶樓踩中亦有獎(jiǎng)
- Microchip有獎(jiǎng)直播:VectorBlox™ SDK 報(bào)名中
- 有獎(jiǎng)直播|ADI 慣性MEMS應(yīng)用那些事
- 借助 Microchip 生態(tài)系統(tǒng)中的 PIC® 和 AVR® 單片機(jī)開啟嵌入式到云端之旅 系列在線研討會
- 帶你零起點(diǎn)入門STM32(專為嵌入式應(yīng)用而開發(fā)的內(nèi)核)
- 福祿克首款熱成像萬用表Fluke-279FC 即將上市!填寫問卷贏好禮嘍!
- EEWorld Datasheet 伴你同行!快來領(lǐng)取200芯積分福利啦~
- 泰克福袋:示伴功倍,萬能福袋派送中
- 小米 8 推 MIUI 12 20.6.4 開發(fā)版
- 小米手環(huán)5外觀:系彩色橢圓屏幕 四色可選
- 一加Z核心參數(shù)泄露:系驍龍765G加持
- 掀起5G普及風(fēng)暴 紫光展銳和海信簽署戰(zhàn)略合作協(xié)議
- MOSFET SGT 5年內(nèi)不會為其他產(chǎn)品取代
- 技術(shù)文章—陶瓷諧振器振蕩電路元件的作用
- 蘋果要和亞馬遜分道揚(yáng)鑣 云端服務(wù)支出實(shí)際越來越低
- 可與硅媲美的光基計(jì)算機(jī)硬件問世
- 李開復(fù):AI時(shí)代用技術(shù)解決技術(shù)挑戰(zhàn)
- 人工智能使會議更有創(chuàng)意的五種方式