STM32的高級功能應用
高級定時器功能框圖
時鐘源
高級定時器有四個時鐘源可以選擇:
1.內部時鐘CK_INT
內部時鐘源CK_INT主要來源于芯片內部,為72M,一般情況下我們都是使用內部時鐘。當從模式控制寄存器TIMx_SMCR的SMS位等于000時則使用內部時鐘。
2.外部時鐘模式1:外部輸入引腳TIx(1,2,3,4)
時鐘信號輸入引腳共有4個,分別是TI(1,2,3,4),及TIM_CH(1,2,3,4)具體使用那一路信號輸入引腳,由TIM_CCMRx的位CCxS[1:0]配置,其中CCMR1控制TI1/2,CCMR2控制TI3/4.
3.外部時鐘模式2:外部觸發輸入ETR
時鐘信號來自定時器的特定輸入通道TIMX_ETR,只有一個。
4.內部觸發輸入(ITRx)
內部觸發輸入是使用一個定時器作為另一個定時器的預分頻器。硬件上高級控制定時器和通用定時器在內部連接在一起,可以實現定時器同步或級聯。主模式的定時器可以對從模式定時器執行復位,啟動,停止或提供時鐘。
時基單元
高級控制寄存器的時基單元功能包括4個寄存器,分別是計數器寄存器(CNT),預分頻控制寄存器(PSC),自動重裝載寄存器(ARR)和重復計數器寄存器(RCR)。其中重復計數器RCR是高級定時器獨有,通用和基本定時器沒有。前面3個寄存器都是16位有效,TIMX_RCR寄存器是8位有效的。
預分頻器:psc,有一個輸入時鐘CK_PSC和一個輸出時鐘CK_CNT。輸入時鐘CK_PSC就是上面時鐘源的輸出,輸出CK_CNT這用來驅動CNT計數。通過設置預分頻器PSC的值可以得到不同的CK_CNT,實際計算為:fck_cnt=fck_psc/(PSC[15:0]+1);可以實現1到65535分頻。
通俗的理解就是:計數一次的時間。
typedef struct{
uint16_t TIM_Prescaler; //預分頻器
uint16_t TIM_CounterMode; //計數器模式
uint16_t TIM_Period; //定時器周期
uint16_t TIM_ClockDivision; //時鐘分頻
uint8_t TIM_RepetitionCounter; //重復計算器
} TIM_TimeBaseInitTypeDef;
例如:
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
TIM_TimeBaseInitStruct.TIM_Prescaler = 35;>>>t=36/(72M)=1/(2M)
TIM_TimeBaseInitStruct.TIM_Period = 1999;>>>T=1/(2M)*2000=1ms,周期1ms
TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_up;>>>向上計數
TIM_TimeBaseInitStruct.TIM_ClockDivision=0;//時鐘分頻系數為0
TIM_TimeBaseInitStruct.TIM_RepetitionCounter=0;//重復計數器
1.ADC采集:獨立多通道采集
2.DMA存儲:外設(ADC)到存儲器
void ADC_Mode_Config(void)
{
DMA_InitTypeDef DMA_InitStructure;
ADC_InitTypeDef ADC_InitStructure;
//根據DMA1的通道1的請求映像選擇通道模式與通道號
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);
DMA_DeInit(DMA1_Channel1);//采用DMA1中的通道1;
DMA_InitStructure.DMA_PeripheralBaseAddr>>>外設地址
DMA_InitStructure.DMA_Memory0BaseAddr>>>存儲器地址,對應的寄存器是:DMA_CMAR;
DMA_InitStructure.DMA_DIR>>>傳輸方向選擇,外設存儲器,存儲器到外設,對應的寄存器DMA_CCR的DIR[1:0]位的值。
DMA_InitStructure.DMA_BufferSize>>>設定待傳輸數據的數目,對應寄存器是DMA_CNDTR寄存器的值。
DMA_InitStructure.DMA_PeripheralInc>>>是否使能外設地址自動遞增功能,對應寄存器是DMA_CCR中的PINC位的值,一般外設都是只有一個數據寄存器,所以不使能。
DMA_InitStructure.MemoryInc>>> 是否使能存儲器地址自動遞增功能,對應寄存器是DMA_CCR的MINC位的值,一般是使能的。
DMA_InitStructure.DMA_PeripheralDataSize>>>外設數據寬度,8位,16位,32位,對應寄存器是DMA_CCR中的PSIZE[1:0]位的值。
DMA_InitStructure.MemoryDataSize>>>存儲器數據寬帶,可選8位,16位,32位對應的寄存器是DMA_CCR中的MSIZE[1:0]位的值。當外設和存儲器之間傳輸數據時,兩邊的數據寬度應該一致。
DMA_InitStructure.DMA_Mode>>>選擇DMA傳輸模式是一次傳輸還是循環傳輸,對應的寄存器是DMA_CCR中的CIRC位的值,由于ADC采集是一個持續循環的狀態,所以選用循環模式。
DMA_InitStructure.DMA_Priority>>>軟件設置通道的優先級,有4個可選優先級分別是非常高,高,中,低,對應寄存器是DMA_CCR中的PL[1:0]位的值。
DMA_InitStructure.DMA_M2M>>>存儲器到存儲器模式,對應寄存器是DMA_CCR中的MEN2MEN位。
ADC_DeInit(ADC1);
ADC_InitStructure. ADC_Mode >>>ADC工作模式的選擇:獨立模式,雙模式對應寄存器是:ADC_CR1:DUALMOD位。
ADC_InitStructure. ADC_ScanConvMode >>>是否選用掃描,單通道選擇DISABLE,多通道選擇ENABLE,對應寄存器是ADC_CR1:SCAN位
ADC_InitStructure. ADC_ContinuousConvMode >>>配置是啟動自動連續轉換還是單次轉換。對應寄存器是ADC_CR2:CON位。
ADC_InitStructure. ADC_ExternalTrigConv >>>外部觸發選擇,一般選擇軟件觸發,也可以根據項目需求配置觸發來源。對應的寄存器是ADC_CR2中的17-20位,EXTTRIG EXTSEL[2:0];
ADC_InitStructure. ADC_DataAlign >>>數據對齊格式,左對齊還是右對齊,一般是右對齊,寄存器是ADC_CR2中的11位,ALIGN;
ADC_InitStructure. ADC_NbrofChannel = AD轉換通道的數目,看你需要幾個通道,對應寄存器是ADC_CR1中的AWDCH[4:0];
ADC_Init(ADC1,&ADC_InitStructure);
RCC_ADCCLKConfig(RCC_PCLK2_Div8);
ADC_RegularChannelConfig(ADC1,ADC_Channel_12,1,ADC_SampleTime_239Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_11,2,ADC_SampleTime_239Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_10,3,ADC_SampleTime_239Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_13,4,ADC_SampleTime_239Cycles5);
ADC_DMACmd(ADC1,ENABLE);//使能ADC的DMA請求;
ADC_Cmd(ADC1,ENABLE);//開啟ADC,并開始轉換
ADC_ResetCalibration(ADC1);//初始化ADC校準寄存器
while(ADC_GetResetCalibrationStatus(ADC1));//等待校準初始化完成
ADC_StartCalibration(ADC1);//ADC開始校準
while(ADC_GetCalibrationStatus(ADC1));//等待校準完成
}
ADC觸發選擇:
ADC通道對應引腳:
3.管腳映射
為了優化64和100腳的封裝的外設數目,可以把一些復用功能重映射到其他腳上。設置復用重映射的配置寄存器是AFIO_MAPR實現引腳的重新映射。這時的復用功能不再存在原來的引腳上面了。
上一篇:STM32-(SysTick定時器,EXTI外部中斷/事件控制器)
下一篇:STM32的SWD使用說明
推薦閱讀
史海拾趣
HellermannTyton公司在電子行業的發展歷程中,積累了豐富的經驗和成就,以下是五個與其發展相關的事實性故事:
1. 創立與初期發展
HellermannTyton的起點可以追溯到其成立之初。作為一家專注于緊固、連接、布線、保護和標識解決方案的全球制造商,HellermannTyton在創立時就明確了其市場定位和技術方向。公司憑借其創新的產品和優質的服務,在電子行業迅速站穩腳跟。初期,公司通過不斷研發和改進產品,滿足了市場對高品質電子配件的需求,逐步建立起穩定的客戶群體和市場基礎。
2. 全球化布局與擴張
隨著業務的不斷發展,HellermannTyton開始實施全球化戰略。公司在全球范圍內設立辦事處和生產基地,以更好地服務全球客戶。這一戰略不僅提升了公司的市場影響力,還促進了產品的國際化銷售。目前,HellermannTyton在30多個國家設有辦事處,并擁有穩定的財務狀況和良好的行業前景。其全球化布局為公司的持續發展和創新提供了強有力的支持。
3. 技術創新與產品研發
HellermannTyton一直將技術創新視為企業發展的核心驅動力。公司投入大量資源進行產品研發和技術創新,不斷推出符合市場需求的新產品。例如,在數據和網絡技術領域,HellermannTyton開發了領先的系統,被認為是行業中的領軍者。這些創新產品不僅提升了公司的市場競爭力,還為客戶提供了更加高效、可靠的解決方案。
4. 中國市場的深耕與發展
在中國市場,HellermannTyton同樣取得了顯著的成績。海爾曼太通(無錫)電器配件有限公司作為HellermannTyton在中國的子公司,自1997年成立以來,一直致力于為全球客戶設計、生產電線裝配及網絡連接產品。公司位于中國無錫新加坡工業園,擁有先進的生產設備和完善的質量管理體系。在中國市場的深耕與發展過程中,HellermannTyton憑借其優質的產品和服務贏得了廣泛的認可和好評。
5. 多元化業務與可持續發展
HellermannTyton的業務范圍不僅限于緊固、連接、布線等傳統領域,還積極拓展多元化業務。公司致力于為客戶提供全方位的解決方案,以滿足不同行業的需求。同時,HellermannTyton還注重可持續發展,通過采用環保材料和綠色生產方式,減少對環境的影響。這種多元化業務和可持續發展的戰略為公司的長期發展奠定了堅實的基礎。
以上五個故事展示了HellermannTyton在電子行業中的發展歷程和成就,體現了其作為全球領先制造商的實力和影響力。
某新興顯示技術公司,將量子點技術應用于顯示屏中,成功提升了顯示效果和色彩表現。量子點技術通過精確控制發光材料的尺寸和組成,實現了更廣的色域覆蓋和更高的色彩準確性。這一技術的應用,使得顯示屏在色彩還原、對比度等方面有了顯著提升,為用戶帶來了更加真實、生動的視覺享受。
CALMIRCO公司注重企業文化的塑造,倡導“創新、協作、務實、進取”的企業精神。公司通過定期舉辦員工培訓、團隊建設等活動,提升員工的職業素養和團隊協作能力。同時,CALMIRCO公司還建立了完善的激勵機制,鼓勵員工積極創新、勇于擔當。這些舉措使得CALMIRCO公司的團隊凝聚力不斷增強,為公司的持續發展提供了有力保障。
CALMIRCO公司注重企業文化的塑造,倡導“創新、協作、務實、進取”的企業精神。公司通過定期舉辦員工培訓、團隊建設等活動,提升員工的職業素養和團隊協作能力。同時,CALMIRCO公司還建立了完善的激勵機制,鼓勵員工積極創新、勇于擔當。這些舉措使得CALMIRCO公司的團隊凝聚力不斷增強,為公司的持續發展提供了有力保障。
在電子行業的激烈競爭中,Electrolube公司始終堅持以客戶需求為導向,不斷創新和拓展產品線。除了UVCL涂層外,公司還推出了一系列樹脂、涂料和熱管理解決方案的產品組合,為EV電池提供全面保護。
這些產品不僅具有優異的性能表現,而且能夠滿足不同客戶的需求。例如,某些產品具有優異的耐高溫性能,適用于高溫環境下的電子設備;而另一些產品則具有出色的耐化學腐蝕性能,能夠在惡劣的工作環境中保持穩定的性能。
Electrolube公司通過不斷的技術創新和產品優化,成功拓展了市場份額,并在電子行業中樹立了良好的品牌形象。同時,公司還積極與各大汽車制造商合作,共同推動電動汽車產業的發展。
現將試驗機項目,和壓力檢測,伺服電機,運動控制等相關,求有經驗者合作。合作的要求是: 1. 有過試驗機項目經驗 2. 上海地區 請符合要求的有意向人士,聯系: Email: leyong.work@hotmail.com… 查看全部問答∨ |
|
如何使用KStreamSocket中的send函數進行發包? 最近調試DriverStudio中自帶的例子Daytime,該程序僅響應收包操作,代碼調試通過。我現在想發包,在OnReceive()函數中加入了Send函數(其他沒變),代碼調試通過,可啟動驅動是就是報錯,不成功。請高人指點?。。』蛘呓榻B一下KStreamSocket類的 ...… 查看全部問答∨ |
工作職責 1. 負責顧客退回產品的維修,并將維修數據填入質量系統 2. 與服務部門及市場部一同提高客戶的滿意度 3. 及時完成任務量,更好的服務客戶 4. ...… 查看全部問答∨ |
PCB生產制作可行性工藝詳解(工程師必備) ------請轉交貴公司電子設計工程師我們在接單、處理工程資料及生產過程種,經常發現一些客戶的設計不符合P ...… 查看全部問答∨ |
問下 我用的是LaunchPadF28027,怎么設置28027ePWM模塊,使其輸出PWM波控制直流有刷電機正反轉? [ 本帖最后由 重新開始 于 2013-8-24 21:34 編輯 ]… 查看全部問答∨ |
用12864串口模式寫程序,抑制了一部分,發現下面這部分看不懂,各位大俠能幫我講一下嗎 假如我給一個顯示 LCD12864_write_word(“電子工程世界”); 請問它是怎么顯示出來的呢? /***************************************************** ...… 查看全部問答∨ |