久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

STM32單片機定時器調試之方波輸出

作者:劉溫電   來源:本站原創   點擊數:  更新時間:2013年11月23日   【字體:

今天試著讓STM32的定時器輸出50%占空比信號,按照例程寫了一下方波初始化函數,例程用的是STM32自帶庫函數,由于嫌麻煩,我又自己寫了一個簡單的,采用定時器1進行輸出。結果一上來,沒反應,修改了很多參數,還是沒反應,然后將開發板例程寫進芯片后,有反應 ,仔細越多數據手冊,沒有問題,糾結一上午,中午吃飯。吃完飯后,下午又開始試驗,還是別人程序有反映,自己程序,沒反應。再看了看,開發板程序使用的是TIM3,而我使用的是TIM1,于是又把我的程序將TIM1換成TIM3,點擊調試運行,有反應 。不會是高級定時器只能干高級的任務吧,像輸出方波這么簡單的低級任務他不惜的干?郁悶了半天。后來通過在網上查找,這個程序
以下為源代碼,CC1進行比較輸出,模式為翻轉電平.

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

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

/* 使能定時器 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);

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


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

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

關閉窗口

相關文章

主站蜘蛛池模板: 日韩欧美视频网站 | 成人性视频在线 | 欧美日韩在线一区二区三区 | 国产精品美女久久久久aⅴ国产馆 | 亚洲免费片 | 在线视频 亚洲 | 午夜在线精品 | 日韩一三区 | av在线二区 | 中国人pornoxxx麻豆 | 精品国产乱码久久久久久图片 | 欧美 日本 国产 | 九色视频网站 | 日韩一区二区在线视频 | 久久里面有精品 | 午夜精品91| 国产午夜一级 | 国产东北一级毛片 | 欧美精品a∨在线观看不卡 国产精品久久国产精品 | 欧美一区二区三区四区五区无卡码 | 久久久久中文字幕 | 欧美日韩高清免费 | 日韩欧美电影在线 | 欧美性tv | 国产福利在线小视频 | 国产激情视频在线 | 国产高清91 | 日本超碰 | 欧美激情在线精品一区二区三区 | 亚洲国产成人在线观看 | 91综合在线观看 | 盗摄精品av一区二区三区 | 男人av的天堂 | 亚洲国产精品va在线看黑人 | 精品久久久久久中文字幕 | 亚洲欧美一区二区三区在线 | 久久久精品一区二区 | 一区二区福利视频 | 在线播放国产一区二区三区 | 日韩欧美国产一区二区 | 日韩av成人在线 |