




已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
.STM32F103C8T6核心板+L298N直流電機(jī)調(diào)速PWM調(diào)速(一) 功能說明 用L298N驅(qū)動(dòng)一臺(tái)直流減速電機(jī),引腳IN1,IN2可用于PWM控制。僅用STM32的兩個(gè)端口給出PWM信號(hào)控制IN1,IN2即可實(shí)現(xiàn)正反轉(zhuǎn)、加減速等動(dòng)作。(二) 硬件說明:控制板:STM32F03C8T6最小系統(tǒng);控制板說明型號(hào):STM32F103C8T6內(nèi)核:ARM 32位的CortexTM-M3 CPU調(diào)試方式:SWD尺寸:22.86mm53.34mm直流電機(jī)驅(qū)動(dòng)板:L298N是SGS公司的產(chǎn)品,比較常見的是15腳MulTIwatt封裝的L298N,內(nèi)部同樣包含4通道邏輯驅(qū)動(dòng)電路??梢苑奖愕尿?qū)動(dòng)兩個(gè)直流電機(jī),或一個(gè)兩相步進(jìn)電機(jī)。(三) 資源配置: STM32F03C8T6使用端口定義端口功能說明配置PA2連接L298N芯片的IN1 通用定時(shí)器的PWM功能, TIM2_CH3PA3連接L298N芯片的IN2通用定時(shí)器的PWM功能,TIM2_CH4PC13控制板帶的LED指示燈,周期性的變化,每變化一次,電機(jī)的轉(zhuǎn)運(yùn)方向變化一次。由TIM3中斷定時(shí)控制。通用定時(shí)器TIM3定時(shí)中斷L298N端口定義 IN1IN2ENA電機(jī)狀態(tài)PA20始終是1順時(shí)針運(yùn)轉(zhuǎn),調(diào)整PA2的頻率,可高速。 0PA3始終是1逆時(shí)針運(yùn)轉(zhuǎn),調(diào)整PA2的頻率,可高速。00始終是1停止(四) 軟件實(shí)現(xiàn) 1:通用定時(shí)器TIM3的中斷定時(shí)實(shí)現(xiàn)步驟 使能定時(shí)器時(shí)鐘。RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); 初始化定時(shí)器,配置【ARR自動(dòng)裝載值,PSC預(yù)分頻系數(shù)?!?TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); 開啟定時(shí)器中斷,配置NVIC。TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); NVIC_Init(&NVIC_InitStructure); 使能定時(shí)器。TIM_Cmd(TIM3, ENABLE); /實(shí)際是配置 控制寄存器1 (TIM3_CR1) 編寫中斷服務(wù)函數(shù)。TIMx IRQHandler();2:通用定時(shí)器TIM2的Channel1、Channel2的PWM實(shí)現(xiàn)步驟 使能定時(shí)器2和相關(guān)IO口時(shí)鐘。使能定時(shí)器2時(shí)鐘:RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);使能GPIOB時(shí)鐘:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); 初始化IO口為復(fù)用功能輸出。函數(shù):GPIO_Init();GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 初始化定時(shí)器:ARR,PSC等:TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); 初始化輸出比較參數(shù):TIM_OC3Init(TIM2, &TIM_OCInitStructure); TIM_OC4Init(TIM2, &TIM_OCInitStructure); 使能預(yù)裝載寄存器: TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable); 使能定時(shí)器。TIM_Cmd(); 不斷改變比較值CCRx,達(dá)到不同的占空比效果:TIM_SetCompare3() ; TIM_SetCompare4() ; 使用Keil5 模擬軟件的Logic Analyzer功能,PA2,PA3,PC13的波形圖如下所示:(五) 附錄:程序源碼1 #include delay.h2 #include sys.h3 #include timer.h45 void GPIO_Config(void) /配置PA2, PA36 7 GPIO_InitTypeDef GPIO_InitStructure;89 /* GPIOA clock enable */10 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_GPIOC,ENABLE); /1112 /*GPIOA Configuration: TIM3 channel 1 and 2 as alternate functionpush-pull */13 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3;14 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; /復(fù)用推挽輸出15 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;16 GPIO_Init(GPIOA, &GPIO_InitStructure);1718 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; /LED0-PC.13端口配置19 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /推挽輸出20 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /IO口速度為50MHz21 GPIO_Init(GPIOC, &GPIO_InitStructure);/根據(jù)設(shè)定參數(shù)初始化GPIOC.1322 2324 int main(void)25 26 delay_init(); /延時(shí)函數(shù)初始化27 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);/設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)2829 /每隔5s的周期,變換電機(jī)的轉(zhuǎn)向。30 /定時(shí)中斷,最小單位鐘頻率=72MHz/36KHz=2KHz31 TIM3_Int_Init(9999,35999) ;3233 GPIO_Config(); /LED,PWM端口初始化,配置PC13,PA2,PA334 TIM2_PWM_Init(47999,2 ); /分頻。最小單位鐘頻率=72000000/(2+1)=24Mhz3536 while(1)37 3839 40 1 #include timer.h23 /通用定時(shí)器3中斷初始化4 /這里時(shí)鐘選擇為APB1的2倍,而APB1為36M5 /arr:自動(dòng)重裝值。6 /psc:時(shí)鐘預(yù)分頻數(shù)7 /這里使用的是定時(shí)器3!89 #define PC13 PCout(13)/ PC131011 void TIM3_Int_Init(u16 arr,u16 psc)12 13 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;14 NVIC_InitTypeDef NVIC_InitStructure;1516 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); /時(shí)鐘使能17 / RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO ,ENABLE );18 / GPIO_PinRemapConfig(GPIO_FullRemap_TIM3 ,ENABLE);1920 TIM_TimeBaseStructure.TIM_Period = arr;/設(shè)置在下一個(gè)更新事件裝入活動(dòng)的自動(dòng)重裝載寄存器周期的值計(jì)數(shù)到5000為500ms21 TIM_TimeBaseStructure.TIM_Prescaler = psc;/設(shè)置用來作為TIMx時(shí)鐘頻率除數(shù)的預(yù)分頻值 10Khz的計(jì)數(shù)頻率22 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;/設(shè)置時(shí)鐘分割:TDTS = Tck_tim23 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;/TIM向上計(jì)數(shù)模式24 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);/根據(jù)TIM_TimeBaseInitStruct中指定的參數(shù)初始化TIMx的時(shí)間基數(shù)單位2526 TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE );/使能指定的TIM3中斷,允許更新中斷2728 NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; /TIM3中斷29 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;/先占優(yōu)先級(jí)0級(jí)30 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; /從優(yōu)先級(jí)3級(jí)31 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; /IRQ通道被使能32 NVIC_Init(&NVIC_InitStructure);/根據(jù)NVIC_InitStruct中指定的參數(shù)初始化外設(shè)NVIC寄存器3334 TIM_Cmd(TIM3, ENABLE); /使能TIMx外設(shè)35 36 /定時(shí)器3中斷服務(wù)程序37 void TIM3_IRQHandler(void) /TIM3中斷38 39 if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)/檢查指定的TIM中斷發(fā)生與否:TIM 中斷源40 41 TIM_ClearITPendingBit(TIM3, TIM_IT_Update );/清除TIMx的中斷待處理位:TIM 中斷源42 PC13=!PC13;4344 if (PC13 =1)45 46 TIM_SetCompare3(TIM2,24000);47 TIM_SetCompare4(TIM2,0);C:STM32F103C8T6核心板+L298N_PWM直流電機(jī)調(diào)速HARDWARETIMERtimer.c48 49 else50 51 TIM_SetCompare3(TIM2,0);52 TIM_SetCompare4(TIM2,24000);53 54 55 5657 /TIM2 PWM部分初始化兩個(gè)PWM波形,分別控制電機(jī)的正轉(zhuǎn)與反轉(zhuǎn)58 /PWM輸出初始化59 /arr:自動(dòng)重裝值60 /psc:時(shí)鐘預(yù)分頻數(shù)61 void TIM2_PWM_Init(u16 arr,u16 psc)62 6364 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;65 TIM_OCInitTypeDef TIM_OCInitStructure;6667 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); /使能定時(shí)器3時(shí)鐘6869 /初始化TIM270 TIM_TimeBaseStructure.TIM_Period = arr;/設(shè)置在下一個(gè)更新事件裝入活動(dòng)的自動(dòng)重裝載寄存器周期的值71 TIM_TimeBaseStructure.TIM_Prescaler =psc;/設(shè)置用來作為TIMx時(shí)鐘頻率除數(shù)的預(yù)分頻值72 TIM_TimeBaseStructure.TIM_ClockDivision = 0; /設(shè)置時(shí)鐘分割:TDTS =Tck_tim73 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;/TIM向上計(jì)數(shù)模式74 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);/根據(jù)TIM_TimeBaseInitStruct中指定的參數(shù)初始化TIMx的時(shí)間基數(shù)單位7576 /初始化TIM2 Channel1 PWM模式77 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;/選擇定時(shí)器模式:TIM脈沖寬度調(diào)制模式278 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;/比較輸出使能79 TIM_OCInitStructure.TIM_Pulse = 13500 ;80 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;/輸出極性:TIM輸出比較極性高81 TIM_OC3Init(TIM2, &TIM_OCInitStructure);/根據(jù)T指定的參數(shù)初始化外設(shè)TIM2 OC482 TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable);/使能TIM2在CCR2上的預(yù)裝載寄存器8384 /初始化TIM2 Channel2 PWM模式85 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;/選擇定時(shí)器模式:TIM脈沖寬度調(diào)制模式286 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;/比較輸出使能87 TIM_OCInitStructure.TIM_Pulse = 0;88 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPola
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鍋爐行業(yè)法律法規(guī)與合規(guī)管理考核試卷
- 生態(tài)農(nóng)業(yè)與面源污染控制考核試卷
- 中職幼兒衛(wèi)生常見疾病
- 急診急救班小講課
- 兒童呼吸道系統(tǒng)概述
- Pyralomicin-2b-生命科學(xué)試劑-MCE
- 6-Alkyne-F-araNAD-生命科學(xué)試劑-MCE
- 探索2025年成人教育線上學(xué)習(xí)新模式下的個(gè)性化學(xué)習(xí)體驗(yàn)報(bào)告
- 2025年腫瘤精準(zhǔn)醫(yī)療臨床實(shí)踐研究進(jìn)展報(bào)告
- 【高中語文】高一下學(xué)期期末適應(yīng)性模擬考試語文試題
- 唐俊蘭分享材料終稿
- AI驅(qū)動(dòng)測(cè)試優(yōu)化
- 2022-2023學(xué)年遼寧省沈陽市高一下學(xué)期期末數(shù)學(xué)試題【含答案】
- 中國歷史地理
- 國考云在線考試系統(tǒng)試題
- 砼攪拌車駕駛員安全生產(chǎn)責(zé)任制
- 部編版三年級(jí)道德與法治下冊(cè)《大家的“朋友”》教案及教學(xué)反思
- 世界各國國別簡(jiǎn)稱三位英文縮寫
- 光伏電站的運(yùn)行維護(hù)
- 教導(dǎo)型組織模式一心靈管理(一)課件
- 小升初ST圖專題
評(píng)論
0/150
提交評(píng)論