在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

探究用雙定時(shí)器控制單片機(jī)輸出固定的數(shù)量的PWM脈沖!

Q4MP_gh_c472c21 ? 來(lái)源:21ic論壇 ? 作者: 吶咯密密 ? 2021-04-29 11:51 ? 次閱讀

最近在逛論壇,看到幾個(gè)帖子都在咨詢?nèi)绾慰刂茊纹瑱C(jī)輸出固定的數(shù)量的PWM脈沖,用于控制電機(jī)的轉(zhuǎn)停,剛好前兩天本人也需要該功能做測(cè)試,我是輸出PWM給伺服電機(jī)驅(qū)動(dòng)器,驅(qū)動(dòng)器以位置模式工作,收到脈沖就控制電機(jī)轉(zhuǎn)動(dòng),如果需要精確控制電機(jī)轉(zhuǎn)過(guò)的角度,就需要給驅(qū)動(dòng)器輸入固定數(shù)量的脈沖。于是我便用STM32F031的雙定時(shí)器實(shí)現(xiàn)了該功能,下文便詳細(xì)描述。

我在進(jìn)行代碼編譯之前也在網(wǎng)絡(luò)上搜索過(guò)相應(yīng)的方法,總結(jié)起來(lái)一共五個(gè)方法:

1、單脈沖法,需要一個(gè)脈沖中斷一次,中斷次數(shù)多,影響效率

2、一個(gè)定時(shí)器輸出PWM,另一定時(shí)器使用輸入捕獲進(jìn)行中斷計(jì)數(shù),與方法1一樣,同樣需要頻繁的中斷

3、用主從定時(shí)器門控方式,比較繁瑣

4、用一個(gè)定時(shí)器(從)作為另一個(gè)定時(shí)器(主)的外部時(shí)鐘觸發(fā)源

5、高級(jí)定時(shí)器T1、T8的重復(fù)計(jì)數(shù)方式,RCR計(jì)數(shù)中斷,看手冊(cè)好像這種方式最簡(jiǎn)單,能滿足一部分人要求,缺點(diǎn)是寄存器只有8位,最多實(shí)現(xiàn)255個(gè)脈沖計(jì)數(shù)輸出。

我在最初時(shí)使用了第2和方法,該方法對(duì)于我來(lái)說(shuō)你叫簡(jiǎn)單,后來(lái)在寫這篇文章時(shí)選擇了第4個(gè)方法,總結(jié)起來(lái)還是4比較靠譜,但是這里的第2方法也描述一下,便于大家選擇。

方法2:

因?yàn)闂l件限制,干脆說(shuō)為了省事,我在原來(lái)用于其他功能的板子上進(jìn)行測(cè)試,因?yàn)橹婚_放了PB3和PB4,所以這里只好用TIM2和TIM3進(jìn)行測(cè)試。

TIM2用于產(chǎn)生PWM脈沖輸出,在輸出給驅(qū)動(dòng)器的同時(shí)將該脈沖也接到PB4,也就是TIM3的輸入口,這樣TIM3也能接收到TIM2發(fā)出的脈沖,TIM3只需要配置為輸入捕獲,并開啟中斷,便可以在每次脈沖到來(lái)進(jìn)入中斷,在TIM3的中斷中去計(jì)數(shù),達(dá)到需要的脈沖數(shù)便關(guān)閉TIM2便可。

首先依舊是初始化端口

先貼一下time.h文件:

* 定義防止遞歸包含 ----------------------------------------------------------*/#ifndef _TIMER_H#define _TIMER_H /* 包含的頭文件 --------------------------------------------------------------*/#include "stm32f0xx.h" /* 宏定義 --------------------------------------------------------------------*/#define TIM6_COUNTER_CLOCK 1000000 //計(jì)數(shù)時(shí)鐘(1M次/秒) //預(yù)分頻值#define TIM6_PRESCALER_VALUE (SystemCoreClock/TIM6_COUNTER_CLOCK - 1)#define TIM6_PERIOD_TIMING (10 - 1) //定時(shí)周期(相對(duì)于計(jì)數(shù)時(shí)鐘:1周期 = 1計(jì)數(shù)時(shí)鐘) #define TIM2_COUNTER_CLOCK 24000000 //計(jì)數(shù)時(shí)鐘(24M次/秒) //預(yù)分頻值#define TIM2_PRESCALER_VALUE (SystemCoreClock/TIM2_COUNTER_CLOCK - 1) /* 函數(shù)申明 ------------------------------------------------------------------*/void Systick_Init(void);void Delay_ms(__IO uint32_t nTime);void TimingDelay_Decrement(void);void Delay(uint32_t
temp);voiddelay_us(uint32_t nus);void delay_init();

void TIMER_Initializes(void); void TIMDelay_N10us(uint16_t Times);void TIMDelay_Nms(uint16_t Times);void TIMDelay_Ns(uint16_t Times); void TIMER_PWM_GPIO_Configuration(void);void TIM2_CH2_PWM(uint32_t Freq, uint16_t Dutycycle);void TIMER_IC_Configuration(void); #endif /* _TIMER_H */

因?yàn)槲业臅r(shí)鐘初始化是單獨(dú)定義的,所以這里未進(jìn)行時(shí)鐘的初始化,在參考的我的代碼時(shí)需注意:

void TIMER_PWM_GPIO_Configuration(void){ GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //TIM2引腳 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //復(fù)用模式 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //高速輸出 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推完輸出 GPIO_InitStructure.

GPIO_PuPd = GPIO_PuPd_UP; //上拉 GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOB, GPIO_PinSource3, GPIO_AF_2); //復(fù)用配置 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; //TIM3引腳 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //復(fù)用模式 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

//高速輸出 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推完輸出 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //無(wú)上下拉(浮空) GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOB, GPIO_PinSource4, GPIO_AF_1); }

配置定時(shí)器2,TIM2作為PWM的脈沖輸出:

/************************************************函數(shù)名稱 :TIM2_CH2_PWM功 能 :定時(shí)器2通道2輸出PWM參 數(shù) :Freq -------- 頻率 Dutycycle --- 占空比返 回 值 :無(wú)作 者 :吶咯密密*************************************************/void TIM2_CH2_PWM(uint32_t Freq, uint16_t Dutycycle){ TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; uint16_t tim2_period; uint16_t tim2_pulse; tim2_period = (uint16_t)(TIM2_COUNTER_CLOCK/Freq - 1); //計(jì)算出計(jì)數(shù)周期(決定輸出的頻率) tim2_pulse = (tim2_period + 1)*Dutycycle / 100; //計(jì)算出脈寬值(決定PWM占空比) /* TIM2時(shí)基單元配置 */ TIM_TimeBaseStructure.TIM_Prescaler = TIM2_PRESCALER_VALUE; //預(yù)分頻值 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

//向上計(jì)數(shù)模式 TIM_TimeBaseStructure.TIM_Period = tim2_period; //定時(shí)周期(自動(dòng)從裝載寄存器ARR的值) TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //時(shí)鐘分頻因子 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); /* TIM2通道2:PWM1模式配置 */ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //輸出PWM1模式 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;

//使能輸出 TIM_OCInitStructure.TIM_Pulse = tim2_pulse; //脈寬值 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //輸出極性 TIM_OC2Init(TIM2, &TIM_OCInitStructure); TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable); TIM_ARRPreloadConfig(TIM2, ENABLE); TIM_Cmd(TIM2, ENABLE); //初始化PWM。}

配置定時(shí)器3,作為捕獲輸入:

void TIMER_IC_Configuration(void){ TIM_ICInitTypeDef TIM_ICInitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseStructure.TIM_Prescaler = 1 - 1; //1分頻(與捕獲分頻相同) TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上計(jì)數(shù)模式 TIM_TimeBaseStructure.TIM_Period = 0xFFFFFFFF; //定時(shí)周期(自動(dòng)從裝載寄存器ARR的值) TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //時(shí)鐘分頻因子 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

TIM_ICInitStructure.TIM_Channel = TIM_Channel_1; //通道1 TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling; //捕獲極性 TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; //捕獲選擇 TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; //捕獲分頻 TIM_ICInitStructure.TIM_ICFilter = 0; //捕獲濾波 TIM_ICInit(TIM3, &TIM_ICInitStructure); TIM3->SR = (uint16_t)~TIM_IT_CC1; //清除中斷標(biāo)志 TIM_Cmd(TIM3, ENABLE); //使能TIM3 TIM_ITConfig(TIM3, TIM_IT_CC1, ENABLE); //使能中斷}

關(guān)于定時(shí)器的通道要根據(jù)手冊(cè)定義來(lái)確定,我的只適配我的硬件。

這里需要著重說(shuō)一下預(yù)分頻TIM_Prescaler的值和捕獲分頻TIM_ICPrescaler的值要對(duì)應(yīng),在上面的代碼中這兩個(gè)值均為1,效果就是每來(lái)一個(gè)脈沖就會(huì)進(jìn)一次中斷。我們只需在中斷里進(jìn)行計(jì)數(shù),想要幾個(gè)脈沖就進(jìn)中斷幾次,達(dá)到需要的脈沖數(shù)就關(guān)閉TIM2。如下所示:

配置中斷:

NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //IRQ通道:定時(shí)器2 NVIC_InitStructure.NVIC_IRQChannelPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);

void TIM3_IRQHandler(void){ if(TIM_GetITStatus(TIM3, TIM_IT_CC1) != RESET) { TIM_ClearITPendingBit(TIM3,TIM_IT_CC1);//先清空中斷標(biāo)志位,以備下次使用。 capture++; if(capture==16) { /*每16個(gè)脈沖轉(zhuǎn)動(dòng)電機(jī)一次*/ TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Disable); TIM_ARRPreloadConfig(TIM2, DISABLE); TIM_Cmd(TIM2, DISABLE);

TIM_Cmd(TIM3, DISABLE); //失能TIM2 TIM_ITConfig(TIM3, TIM_IT_CC1, DISABLE); //失能中斷 capture=0; delay_us(5000); TIM_Cmd(TIM3, ENABLE); //失能TIM2 TIM_ITConfig(TIM3, TIM_IT_CC1, ENABLE); //失能中斷 TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable); TIM_ARRPreloadConfig(TIM2, ENABLE); TIM_Cmd(TIM2, ENABLE); } }}/*

在TIM3的中斷函數(shù)中,我們定義一個(gè)變量capture,每次進(jìn)入中斷該值會(huì)加一,進(jìn)入16次中斷,也就是有16個(gè)脈沖輸入就會(huì)滿足條件進(jìn)入if()函數(shù),關(guān)閉TIM2和TIM3,延時(shí)5000us后再打開這兩個(gè)定時(shí)器,如此循環(huán)。可從示波器看現(xiàn)象:

9c4a1b6c-a86f-11eb-9728-12bb97331649.png

9c89712c-a86f-11eb-9728-12bb97331649.png

現(xiàn)在我們已經(jīng)完成了對(duì)TIM2的輸出固定個(gè)數(shù)脈沖的試驗(yàn),但是這種方式每個(gè)脈沖都進(jìn)一次中斷太麻煩,于是可以修改預(yù)分頻TIM_Prescaler的值為8-1,和捕獲分頻TIM_ICPrescaler的值為TIM_ICPSC_DIV8,便可8個(gè)脈沖進(jìn)一次中斷。

9cc82336-a86f-11eb-9728-12bb97331649.png

此時(shí)也將中斷函數(shù)里的判斷條件改為1,進(jìn)一次中斷便會(huì)關(guān)閉定時(shí)器,我們接上示波器看看現(xiàn)象:

9cd37128-a86f-11eb-9728-12bb97331649.png

通過(guò)示波器我們可以看到,雖然只進(jìn)了一次中斷,但是我們卻輸出8個(gè)脈沖,以此可減少進(jìn)入中斷的次數(shù)。至此,通過(guò)TIM3的輸入捕獲控制PWM脈沖數(shù)的試驗(yàn)就完成了。 方法4: 方法4是利用主從定時(shí)器進(jìn)行脈寬調(diào)制,不占用主時(shí)鐘,在代碼時(shí)間要求苛刻和多電機(jī)控制時(shí)非常實(shí)用,可以精準(zhǔn)控制。 GPIO的初始化和上文保持不變,僅改變TIM的配置: TIM2設(shè)置為主模式

/***********************TIM2初始化函數(shù)*****************************參數(shù):****************************************************//******u32 Cycle用于設(shè)定計(jì)數(shù)頻率(計(jì)算公式:Cycle=1Mhz/目標(biāo)頻率)******返回值:**************************************************//******無(wú)*****************************************************/void TIM2_config(uint32_t Cycle){ TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; TIM_TimeBaseStructure.TIM_Period = Cycle-1; //使用Cycle來(lái)控制頻率(f=48/(47+1)/Cycle) 當(dāng)Cycle為100時(shí)脈沖頻率為10KHZ TIM_TimeBaseStructure.TIM_Prescaler =47; //設(shè)置用來(lái)作為TIMx時(shí)鐘頻率除數(shù)的預(yù)分頻值 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //設(shè)置時(shí)鐘分割:TDTS= Tck_tim TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上計(jì)數(shù)模式 TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;

//重復(fù)計(jì)數(shù),一定要=0!!! TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //選擇定時(shí)器模式:TIM脈沖寬度調(diào)制模式1 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比較輸出使能 TIM_OCInitStructure.TIM_Pulse = Cycle/2-1; //設(shè)置待裝入捕獲寄存器的脈沖值(占空比:默認(rèn)50%,這可也可以調(diào)節(jié)如果需要的話將它作為一個(gè)參數(shù)傳入即可) TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //輸出極性 TIM_OC2Init(TIM2, &TIM_OCInitStructure); //使能通道2 TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable);

//設(shè)置為主從模式 TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update); //選擇定時(shí)器2的觸發(fā)方式(使用更新事件作為觸發(fā)輸出) TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable); //使能通道2預(yù)裝載寄存器 TIM_ARRPreloadConfig(TIM2, ENABLE); //使能TIM2在ARR上的預(yù)裝載寄存器 } TIM3設(shè)置為從模式:

/***********************TIM3初始化函數(shù)*************************//****參數(shù):****************************************************//******u32 PulseNum用于設(shè)定脈沖數(shù)量****************************//****返回值:*************************************************//******無(wú)*****************************************************/ void TIM3_config(uint32_t PulseNum){ TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); TIM_TimeBaseStructure.TIM_Period = PulseNum-1; //設(shè)置自動(dòng)重裝載周期值 TIM_TimeBaseStructure.

TIM_Prescaler =0; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); TIM_SelectInputTrigger(TIM3, TIM_TS_ITR1); TIM_SelectSlaveMode(TIM3,TIM_SlaveMode_External1 );// 等同 TIM3->SMCR|=0x07 //設(shè)置從模式寄存器 TIM_ITConfig(TIM3,TIM_IT_Update,DISABLE); } 這里的TIM_SelectInputTrigger(TIM3, TIM_TS_ITR1);是設(shè)置為內(nèi)部觸發(fā),參數(shù)由手冊(cè)進(jìn)行獲取:

9d1d078e-a86f-11eb-9728-12bb97331649.png

/************************脈沖輸出函數(shù)**************************//****參數(shù):****************************************************//******u32 Cycle用于設(shè)定計(jì)數(shù)頻率(計(jì)算公式:Cycle=1Mhz/目標(biāo)頻率)//******u32 PulseNum用于設(shè)定輸出脈沖的數(shù)量(單位:個(gè))************//****返回值:**************************************************//******無(wú)*****************************************************/void Pulse_output(uint32_t Cycle,uint32_t PulseNum){ TIM3_config(PulseNum); //設(shè)置脈沖數(shù)量 TIM_Cmd(TIM3, ENABLE); //使能TIM3(從定時(shí)器) TIM_ClearITPendingBit(TIM3,TIM_IT_Update); //清除中斷標(biāo)志位 TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); //使能更新中斷 TIM2_config(Cycle); //使能定時(shí)器2(主定時(shí)器) TIM_Cmd(TIM2, ENABLE); //使能定時(shí)器2// TIM_CtrlPWMOutputs(TIM2, ENABLE); //高級(jí)定時(shí)器一定要加上,主輸出使能}

void TIM3_IRQHandler(void){ if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //TIM_IT_Update { TIM_ClearITPendingBit(TIM3, TIM_IT_Update); // 清除中斷標(biāo)志位 TIM_CtrlPWMOutputs(TIM2, DISABLE); //主輸出使能 TIM_Cmd(TIM2, DISABLE); //關(guān)閉定時(shí)器 TIM_Cmd(TIM3, DISABLE); //關(guān)閉定時(shí)器 TIM_ITConfig(TIM3, TIM_IT_Update, DISABLE); //關(guān)閉TIM2更新中斷 }} 當(dāng)TIM的CNT寄存器的值到達(dá)設(shè)定的Update值會(huì)觸發(fā)更新中斷,此時(shí)設(shè)定的脈沖數(shù)已輸出完畢,關(guān)閉TIM2和TIM3. 主函數(shù):

9d29a7aa-a86f-11eb-9728-12bb97331649.png

9d3f18c4-a86f-11eb-9728-12bb97331649.png

該代碼本人均已調(diào)通,原理部分過(guò)于繁雜,這里以本人能力可能無(wú)法解釋的清除,諸位可參考手冊(cè)或網(wǎng)絡(luò)獲取相關(guān)講解。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6064

    文章

    44932

    瀏覽量

    647493
  • 脈沖
    +關(guān)注

    關(guān)注

    20

    文章

    901

    瀏覽量

    96826
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3289

    瀏覽量

    117336
  • Tim
    Tim
    +關(guān)注

    關(guān)注

    0

    文章

    84

    瀏覽量

    18254

原文標(biāo)題:深度:用雙定時(shí)器控制單片機(jī)輸出固定的數(shù)量的PWM脈沖!

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    MCU定時(shí)器/計(jì)數(shù)

    架構(gòu)與功能特性? 定時(shí)器類型與配置? 高級(jí)控制定時(shí)器?:支持互補(bǔ)PWM輸出與剎車功能,適用于電機(jī)驅(qū)動(dòng)等高精度控制場(chǎng)景。通用
    的頭像 發(fā)表于 04-27 13:54 ?186次閱讀

    瑞薩RA8D1單片機(jī)輸出PWM實(shí)現(xiàn)方法

    也有通過(guò)定時(shí)器中斷控制IO高低電平輸出實(shí)現(xiàn)的。
    的頭像 發(fā)表于 04-11 17:07 ?2642次閱讀
    瑞薩RA8D1<b class='flag-5'>單片機(jī)</b><b class='flag-5'>輸出</b><b class='flag-5'>PWM</b>實(shí)現(xiàn)方法

    如何使用定時(shí)器在任意IO輸出PWM

    在CubeMx內(nèi)的配置,計(jì)劃在PA2口輸出PWM控制風(fēng)機(jī),但是TIM2已經(jīng)初始化做輸入捕獲用了,因此需要用到別的未使用的定時(shí)器在PA2口輸出
    發(fā)表于 03-13 06:04

    stm32同一個(gè)定時(shí)器不同的通道,可以不同時(shí)的輸出pwm波形嗎?

    請(qǐng)問(wèn),stm32的同一個(gè)定時(shí)器,不同的通道,可以不同時(shí)的輸出pwm波形嗎?比如tim1的ch1輸出,延時(shí)幾毫秒后tim1的ch2輸出。 現(xiàn)在
    發(fā)表于 03-07 08:20

    51單片機(jī)pwm和spwm

    51單片機(jī)pwm
    發(fā)表于 01-08 15:54 ?3次下載

    8位單片機(jī)HS16P2811產(chǎn)品概述

    HS16P2811是采用低功耗高速CMOS工藝制造的8位單片機(jī),它內(nèi)建了2K*14-bit的OTP、128Byte的SRAM。包含1個(gè)16位定時(shí)器T1。1個(gè)10位定時(shí)器T3,可輸出1帶
    的頭像 發(fā)表于 12-17 09:21 ?1489次閱讀
    8位<b class='flag-5'>單片機(jī)</b>HS16P2811產(chǎn)品概述

    使用單片機(jī)實(shí)現(xiàn)直流電機(jī)的PWM調(diào)速控制原理圖

    使用單片機(jī)實(shí)現(xiàn)直流電機(jī)的PWM調(diào)速控制
    發(fā)表于 12-10 15:29 ?6次下載

    MCU與單片機(jī)的區(qū)別

    元,簡(jiǎn)稱MCU,是一種集成電路芯片,它將計(jì)算機(jī)的CPU、存儲(chǔ)、可編程輸入/輸出外設(shè)等集成在一個(gè)芯片上。MCU通常用于嵌入式系統(tǒng),能夠控制其他電子設(shè)備或機(jī)械部件。 1.2 單片機(jī)
    的頭像 發(fā)表于 11-11 14:50 ?2480次閱讀

    單片機(jī)開發(fā):使用內(nèi)部看門狗定時(shí)器(WDT)還是外掛看門狗芯片?

    不需要看門狗功能。 看門狗定時(shí)器(WDT)是一種用于檢測(cè)在嵌入式系統(tǒng)中的異常并復(fù)位單片機(jī)。它通常包含一個(gè)預(yù)裝計(jì)時(shí),該計(jì)時(shí)遞減為零。當(dāng)預(yù)裝的看門狗
    發(fā)表于 09-25 13:46

    瑞薩單片機(jī)PWM輸出

    如何通過(guò)e2-studio配置GPT定時(shí)器輸出指定數(shù)量PWM后停止輸出
    發(fā)表于 09-19 10:01

    驅(qū)動(dòng)激光的窄脈沖是怎么產(chǎn)生的?

    如題我現(xiàn)在用的是51單片機(jī)定時(shí)器產(chǎn)生的脈沖 達(dá)不到窄脈沖的要求 手里有STM32可產(chǎn)生PWM,但是感覺(jué)百ns以內(nèi)的窄
    發(fā)表于 08-21 07:35

    簡(jiǎn)述單片機(jī)定時(shí)器的工作原理

    單片機(jī)定時(shí)器的工作原理是一個(gè)復(fù)雜而精細(xì)的過(guò)程,它涉及到單片機(jī)內(nèi)部的多個(gè)組件和機(jī)制。
    的頭像 發(fā)表于 08-19 18:20 ?2867次閱讀

    請(qǐng)問(wèn)如何使用定時(shí)器在任意IO輸出PWM

    問(wèn)題描述: 在CubeMx內(nèi)的配置,計(jì)劃在PA2口輸出PWM控制風(fēng)機(jī),但是TIM2已經(jīng)初始化做輸入捕獲用了,因此需要用到別的未使用的定時(shí)器在PA2口
    發(fā)表于 07-24 06:38

    定時(shí)器的工作方式介紹

    或?qū)崿F(xiàn)周期性事件的硬件模塊。它可以用于實(shí)現(xiàn)各種定時(shí)任務(wù),如定時(shí)中斷、PWM脈沖寬度調(diào)制)輸出、頻率測(cè)量等。
    的頭像 發(fā)表于 07-12 10:29 ?1762次閱讀

    STM32G4系列芯片定時(shí)器的延時(shí)輸出問(wèn)題

    有人使用STM32G4系列芯片內(nèi)部的多個(gè)定時(shí)器PWM輸出輸出頻率一樣,占空比也一樣,均為50%。可是,當(dāng)他中途調(diào)整各個(gè)定時(shí)器以相同的工作
    的頭像 發(fā)表于 07-01 09:45 ?2520次閱讀
    STM32G4系列芯片<b class='flag-5'>定時(shí)器</b>的延時(shí)<b class='flag-5'>輸出</b>問(wèn)題
    主站蜘蛛池模板: 女人张开腿让男人桶视频免费大全 | 国产精品一区二区三区四区五区 | 一区二区三区四区免费视频 | 午夜国产福利在线 | 手机在线你懂得 | 手机看片日韩永久福利盒子 | 亚洲精品午夜视频 | 日韩高清性爽一级毛片免费 | 婷婷四房播客五月天 | 国产精品嫩草影院一二三区 | 国产精品香蕉成人网在线观看 | 性欧美另类 | 日日摸夜夜添免费毛片小说 | 日本在线观看永久免费网站 | 亚洲不卡免费视频 | 男女性生动态免费视频 | 手机看片1024免费视频 | 女同国产 | 久久精品国产精品亚洲人人 | 午夜在线免费视频 | 国产在线97色永久免费视频 | 牛仔裤美女国产精品毛片 | 免费午夜视频 | 国产美女精品一区二区三区 | 久久精品国波多野结衣 | 青草国产在线视频 | 国产午夜精品久久理论片小说 | 最色网在线观看 | 特一级毛片| 综合网视频 | 在线播放亚洲视频 | 我把美女日出白浆 | 性配久久久 | 国产久视频 | 欧美天天综合 | 免费簧片视频 | 久久青草国产精品一区 | aa在线播放| 日本黄色录像视频 | 黄色在线播放视频 | 亚洲操综合|