使用STM32CubeMx搭建平衡小車代碼框架_第1頁
使用STM32CubeMx搭建平衡小車代碼框架_第2頁
使用STM32CubeMx搭建平衡小車代碼框架_第3頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、使用STM32CubeM快速搭建平衡小車代碼框架硬件平臺(tái):STM32CubeMxHAL代碼庫(kù):STM32F1xx項(xiàng)目平臺(tái):MDK5 17A1、項(xiàng)目總體框架如下:傳感器r1控制番:廠執(zhí)行機(jī)拘1*1 I11111PWM1;控制V車IIii龜機(jī)凰其慶i1ii:動(dòng)結(jié)構(gòu)iii姿態(tài)I I IIi | iI IIMPU6050得數(shù)據(jù)讀取采用軟件模擬IIC,可使用MPU得DMP庫(kù)直接生成角度值, 減輕MCU計(jì)算負(fù)擔(dān);(DMP庫(kù)資源詳見,正點(diǎn)原子MPU6050資料)電機(jī)驅(qū)動(dòng)部分采用市面上常見得直流電機(jī)驅(qū)動(dòng) ,引腳分布如下:PWMA,PWMB,A0,A1,B0,B1;其中PWMA、PWMB為電機(jī)驅(qū)動(dòng)信號(hào);A0、A

2、1、 B0、B1為電機(jī)方向控制信號(hào),其控制電平如下A0A1電機(jī)高高制動(dòng)高低正轉(zhuǎn)低高反轉(zhuǎn)低低停止其中,制動(dòng)為電機(jī)鎖死,而停止為電機(jī)停轉(zhuǎn);2、項(xiàng)目搭建:Step1、打開 STM32CubeMX,單擊“ New Project ”,選擇芯片型號(hào),STM32F103C8Tx。Llp : I VMV 町 mu325 fcc咖HimioZ_DDpo詢nfnStep2、配置Debug,根據(jù)實(shí)際選擇Step3、配置外部時(shí)鐘信號(hào)Step4、配置TIM2(PWM 發(fā)生器)2 TIM25Lave Ude DlsahleVTrigger Source Di sableVClock SoirceDisable2-Cha

3、nnell PiK Generation CH17Channels PtU GenerationvCEanneLJ DisableVChflnn?!4 bi sable7:Ccr.bined CharmeLs Dimabl.史lie ETR as Cltarinfi Source! -QXOR activation| Ctip Pill me MadeStep5、配置模擬IIC弓I腳Step6配置電機(jī)控制引腳-5czR 匸-eft口rl L% sLeft_PWMgLRW卜IStep7、配置TIM3(用作微妙延時(shí)時(shí)鐘),CubeMx生成得代碼中不包含微妙延時(shí) 此部分用于實(shí)現(xiàn)模擬IIC得微妙延時(shí)

4、日 * T1M3Slae Mode Di.zitLewTrigger Source DisableV0 Internal CicekChannellDisableChannel?DisableDisable7Charm el 4Di7Comtined ChannelsDisableVMOR activation匚 One Pulse Me典Step8配置USART1(用于串口調(diào)試)Step9時(shí)鐘配置注:關(guān)于輸入時(shí)鐘一定要按實(shí)際晶振頻率填寫,否則會(huì)造成時(shí)序混亂Step10 TIM2 參數(shù)配置(10KHz)TIM2 ConfigurationUser Constants N;TC Settinas

5、bDMA SettifiJES bbnarrrmaaaBi-isrn ivBaBeaKiiiairiaarBr !Configure the below paroJieiers :Re store DefaultSearch : &迅h Sp* *百Caimter SettingPrescaler (PSC - It bit已一71Counier ModeUpCounicr Period (AutoRoIo, . *99Internal Clock Division No DivisionTrigger Output (TUGO) ParametersMattr Slave MadeDisab

6、le no syric between tkis UM (Mast.frigger Event i&letti&rtReset CUG bit fron TUlr_EGR)Cd PNM Generation Channel LModePUM mode 1Pulse .19 bics value:QFast ModeDisableCH PcLaritvHigh-卩刑 Gener;iTi&n Channel 2ModePWM inode 1Pulse (16 bits value)0Fast Mod*DisableCH PolarityHighAppl yOkCane e 1Stepll、配置TI

7、M3(微妙延時(shí)定時(shí)器)TIMS ConfigurdtinnParameter Setiinga - User Constants tWIC Settings : p站 SettingsConfi.jre the below g呻lEttz弓:Search : cjrch EW二 Counter SetTin&FPrescaler (PSC - If bits, , rCounter VoceCounter Pevi od (AutoRelr.,Intpz-nal Clork Div: s:on Irifisr Output TKW) Fa:_an)?tersSlave ModeTrigtfr

8、Event Seleetion711DottiLVia Divi sionDisable (no iync between this TIM (Mawt.R藝EEi【UG bit froji TD4x_EGR1Frcsculor (PSC - 16 bits va1 lift) Prescaler rust be between 0 and 6b 535.亡 Defau 11OkCance1定時(shí)器時(shí)鐘頻率得計(jì)算:定時(shí)器時(shí)鐘頻率:72MHz72MHz/(PSC+1)/ARR=72/(71+1)/1=1Mhz=1us;Step12 配置 GPIO 口齊 Fin LanffiguMticnGFHET

9、 STE 13IE LSAHTL r-frr r B F -J rr dj J JJ 比:-KF便r iI1 ? GjS r. -bItw LibvlHpdifiv-d* Srkk ; Puid 1 CiJ-lt LQ ii; .gdt r til Htalilplti 詢】mLMli * AllwVinlAppiFOk,Bf FrLpb49fdi3dStep13生成項(xiàng)目配置 Project SettingsProject Code Generator Advanced SettingsProject SettingsProject NaneLesson BalanceCarProject L

10、ocationD:STM32DemoToolchain Folder LocationD:STM32DemoLesson BalaneeCarToolchain / IDEMDK-ARM Y5v Generate Under RootLinker SettingsMinimum Heap Size 0x200Minimum Stack Size 0x400Mcu and Firmwa工己 PackageMcu ReferenceSTM32F103C8TXFirmware Package Name and VersionSMZCdbe FT Fl V1.4 0叼Use Default Firmw

11、are Location|iministrator/STM32Cube/RepositoTv7STM32Cube FW Fl VI. 4. 0 I BrowseOk CancelProject SettingsProject Code encratox Advanced SettingsSTM32Cube Firmware Lrbrajry Package:lCopy all used libraries into the project folderOCopy cnly the necessary library filesC) Add necessaiv library files as

12、reference in the roolchain pro,.Generated filesGenerate peripheral initialization as a pair of 1, c , h files.,.Backup jieviously generated file when re geiier1)counter=_HAL_TIM_GetCou nter(&htim3); - -HAL_TIM_Base_Stop(&htim3);void Delay_ms(ui nt32_t ms)Delay_us(1000*ms);代碼片段 2 模擬 IIC:#define HIGH

13、1#define LOW 0#define SDA_IN GPIOBCRL&=0x0FFFFFFF;GPIOBCRL|=0x40000000;#define SDA_OUT GPIOBCRL&=0x0FFFFFFF;GPIOBCRL|=0x10000000;#define IIC_SCL(n) (n?HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_SET):HAL_GPIO_Write Pin(GPIOB,GPIO_PIN_6,GPIO_PIN_RESET) /SCL#define IIC_SDA(n) (n?HAL_GPIO_WritePin(GPIO

14、B,GPIO_PIN_7,GPIO_PIN_SET):HAL_GPIO_Write Pin(GPIOB,GPIO_PIN_7,GPIO_PIN_RESET) /SDA#define READ_SDA HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_7)void IIC_Init(void)IIC_SDA(HIGH);IIC_SCL(HIGH);void IIC_Start(void)SDA_OUT;IIC_SDA(HIGH);IIC_SCL(HIGH);Delay_us(4);IIC_SDA(LOW);Delay_us(4);IIC_SCL(LOW);void IIC_Stop

15、(void)SDA_OUT;IIC_SCL(LOW);IIC_SDA(LOW);Delay_us(4);IIC_SCL(HIGH);IIC_SDA(HIGH);Delay_us(4);uint8_t IIC_Wait_Ack(void)uint8_t ucErrTime=0;SDA_IN;IIC_SDA(HIGH);Delay_us(1);IIC_SCL(HIGH);Delay_us(1);while(READ_SDA)ucErrTime+;if(ucErrTime250)IIC_Stop;return 1;IIC_SCL(LOW);return 0;void IIC_Ack(void)IIC

16、_SCL(LOW);SDA_OUT;IIC_SDA(LOW);Delay_us(2);IIC_SCL(HIGH);Delay_us(2);IIC_SCL(LOW);void IIC_NAck(void)IIC_SCL(LOW);SDA_OUT;IIC_SDA(HIGH);Delay_us(2);IIC_SCL(HIGH);Delay_us(2);IIC_SCL(LOW);void IIC_Send_Byte(uint8_t txd)uint8_t t;SDA_OUT;IIC_SCL(LOW);for(t=0;t7); txd=1;Delay_us(2);IIC_SCL(HIGH);Delay_

17、us(2);IIC_SCL(LOW);Delay_us(2);uint8_t IIC_Read_Byte(uint8_t ack)uint8_t i,receive=0;SDA_IN;for(i=0;i8;i+ )IIC_SCL(LOW);Delay_us(2); IIC_SCL(HIGH); receiveLastError=0; sptrPrevError=0; sptrProportion=P_DATA; sptrIntegral=I_DATA;sptrDerivative=D_DATA;sptrSetPoint=0;int IncPIDCalc(PID* sptr,int nextPo

18、int)int iError,iIncpid;iError=sptrSetPointnextPoint;iIncpid=sptrProportion*iErrorsptrIntegral*sptrLastError+sptrDerivative*sptrPrevError;sptrPrevError=sptrLastError;sptrLastError=iError;return iIncpid;代碼片段 4 PWM 發(fā)生器HAL_GPIO_WritePin(Left_Dir0_GPIO_Port,Left_Dir0_Pin,GPIO_PIN_SET);HAL_GPIO_WritePin(Left_Dir1_GPIO_Port,Left_Dir1_Pin,GPIO_PIN_RESET );HAL_GPIO_WritePin(Right_Dir0_GPIO_Port,Right_Dir0_Pin,GPIO_PIN_SET)HAL_GPIO_WritePin(Right_Dir1_GPIO_Port,Right_Dir1_Pin,GPIO_PIN_RESET);HAL_TIM_Se

溫馨提示

  • 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論