<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > STM32單片機定時(shí)器調試之方波輸出

STM32單片機定時(shí)器調試之方波輸出

作者: 時(shí)間:2016-11-30 來(lái)源:網(wǎng)絡(luò ) 收藏
今天試著(zhù)讓STM32定時(shí)器輸出50%占空比信號,按照例程寫(xiě)了一下方波初始化函數,例程用的是STM32自帶庫函數,由于嫌麻煩,我又自己寫(xiě)了一個(gè)簡(jiǎn)單的,采用定時(shí)器1進(jìn)行輸出。結果一上來(lái),沒(méi)反應,修改了很多參數,還是沒(méi)反應,然后將開(kāi)發(fā)板例程寫(xiě)進(jìn)芯片后,有反應 ,仔細越多數據手冊,沒(méi)有問(wèn)題,糾結一上午,中午吃飯。吃完飯后,下午又開(kāi)始試驗,還是別人程序有反映,自己程序,沒(méi)反應。再看了看,開(kāi)發(fā)板程序使用的是TIM3,而我使用的是TIM1,于是又把我的程序將TIM1換成TIM3,點(diǎn)擊調試運行,有反應 。不會(huì )是高級定時(shí)器只能干高級的任務(wù)吧,像輸出方波這么簡(jiǎn)單的低級任務(wù)他不惜的干?郁悶了半天。后來(lái)通過(guò)在網(wǎng)上查找,這個(gè)程序

以下為源代碼,CC1進(jìn)行比較輸出,模式為翻轉電平.

本文引用地址:http://dyxdggzs.com/article/201611/324059.htm

程序運行后,CC中斷可以進(jìn)去,PA.11的指示燈能閃,但PA.08的指示一直為低電平,請教一下程序哪里錯了???

void TIM1_CC_Init(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;

/* 使能定時(shí)器 TIM1_CC 中斷 */
NVIC_InitStructure.NVIC_IRQChannel = TIM1_CC_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

/* 配置 PA.11 為推挽輸出 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIOA->BSRR = GPIO_Pin_11; // 將PA.08配置為高電平

/* 配置 PA.08 為復用推挽輸出 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);

/* 預分頻自動(dòng)重載寄存器 */
TIM1->ARR = 0x2FFF;
/* PSC 預分頻器:計數頻率 = CK_PSC /(PSC + 1) */
TIM1->PSC = 0xFF;
/* CCR1 捕獲比較值寄存器 */
TIM1->CCR1 = 0xFFF;
/* 循環(huán)計數器的寄存器(控制更新事件) */
TIM1->RCR = 0x00; // 每次更新
/* 捕獲/比較模式寄存器 */
TIM1->CCMR1 = 0x30; // CC1為輸出,CCR1立即生效,輸出翻轉.
/* 捕獲/比較使能寄存器 */
TIM1->CCER = 0x03; // 開(kāi)啟CC1輸出,反向輸出
/* 中斷使能寄存器*/
TIM1->DIER = 0x02; // 使能 CC1 中斷
/* 控制寄存器1 */
TIM1->CR1 = 0x01; // 使能計數器(向上計數)
}

/***************************************************************************************
** 函數名稱(chēng): TIM1_CC_IRQHandler
** 功能描述: CC 中斷
** 參 數: None
** 返 回 值: None
****************************************************************************************/
void TIM1_CC_IRQHandler(void)
{
static uint32 counter = 0;

TIM1->SR &= ~2; // 清除中斷標志(不做判斷提高效率)

if(counter)
{
counter = 0;
GPIOA->BSRR = GPIO_Pin_11;
}
else
{
counter = 1;
GPIOA->BRR = GPIO_Pin_11;
}
}


最后找到問(wèn)題,沒(méi)有打開(kāi)主輸出...
/* 打斷和死區控制器*/
TIM1->BDTR = 0x8000; // 主輸出使能(MOE)
加這句就可以了.

得知,高級定時(shí)器就是高級定時(shí)器,由于加入了剎車(chē)和死區,所以想輸出波形,必須要比普通定時(shí)器多一句“TIM1->BDTR = 0x8000;” 開(kāi)啟主輸出使能,通道輸出和這個(gè)必須同時(shí)開(kāi)啟,若出現剎車(chē)信號,則一次將4路輸出全部關(guān)閉。以保證設備能夠正常運行。哎!悲催呀,糾結了一上午。stm32定時(shí)器還真是復雜,尤其是高級定時(shí)器。設計者真是了不起,還要感謝這位仁兄,要不是他我恐怕還得多弄幾天



評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>