版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、WORD格式使用 STM32CubeMx快速搭建平衡小车代码框架硬件平台: STM32CubeMxHAL代码库: STM32F1*工程平台 :MDK5.17A1.工程总体框架如下:MPU6050 的数据读取采用软件模拟 IIC, 可使用 MPU 的 DMP 库直接生成角度值,减轻 MCU 计算负担 ;(DMP 库资源详见,正点原子 MPU6050 资料 ) 电机驱动局部采用市面上常见的直流电机驱动,引脚分布如下:PWMA,PWMB,A0,A1,B0,B1 ;其中 PWMA 、 PWMB 为电机驱动信号;A0、A1 、B0、 B1 为电机方向控制信号,其控制电平如下:A0A1电机高高制动高低正转
2、低高反转低低停顿其中,制动为电机锁死,而停顿为电机停转;2.工程搭建:Step1.翻开 STM32CubeMX ,单击“ New Project ,选择芯片型号,STM32F103C8Tx 。专业资料整理WORD格式Step2.配置 Debug,根据实际选择专业资料整理WORD格式Step3.配置外部时钟信号Step4.配置 TIM2(PWM发生器 )Step5.配置模拟IIC 引脚Step6.配置电机控制引脚专业资料整理WORD格式Step7.配置 TIM3( 用作微妙延时时钟 ),CubeMx 生成的代码中不包含微妙延时,此局部用于实现模拟 IIC 的微妙延时专业资料整理WORD格式Ste
3、p8.配置 USART1(用于串口调试 )Step9.时钟配置注:关于输入时钟一定要按实际晶振频率填写,否那么会造成时序混乱; Step10.TIM2 参数配置 10KHz 专业资料整理WORD格式Step11配.置 TIM3( 微妙延时定时器 )专业资料整理WORD格式定时器时钟频率的计算:定时器时钟频率 :72MHz72MHz/(PSC+1)/ARR=72/(71+1)/1=1Mhz=1us;Step12.配置 GPIO 口专业资料整理WORD格式Step13.生成工程配置专业资料整理WORD格式专业资料整理WORD格式至此,关于平衡小车的软件框架配置已全部完成,点击工程生成,进入 MDK
4、 编写代码:代码片段 1:微妙函数的实现#include "delay.h"#include "tim.h"void Delay_us(uint32_t us)uint16_t counter=us&0xffff;HAL_TIM_Base_Start(&htim3);_HAL_TIM_SetCounter(&htim3,counter);while(counter>1)counter=_HAL_TIM_GetCounter(&htim3);专业资料整理WORD格式HAL_TIM_Base_Stop(&htim
5、3);void Delay_ms(uint32_t ms)Delay_us(1000*ms);代码片段 2 模拟 IIC :专业资料整理WORD格式#define HIGH 1 #define LOW0专业资料整理WORD格式#define SDA_IN()GPIOB->CRL&=0x0FFFFFFF;GPIOB->CRL|=0x40000000;专业资料整理WORD格式#define SDA_OUT() GPIOB->CRL&=0x0FFFFFFF;GPIOB->CRL|=0x10000000;#define IIC_SCL(n) (n"HA
6、L_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(GPIOB,GPIO_PIN_7,GPIO_PIN_SET):HAL_GPIO_Write Pin(GPIOB,GPIO_PIN_7,GPIO_PIN_RESET) /SDA#define READ_SDAHAL_GPIO_ReadPin(GPIOB,GPIO_PIN_7)void IIC_Init(v
7、oid)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(void)SDA_OUT();专业资料整理WORD格式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 ucErrTi
8、me=0;SDA_IN();IIC_SDA(HIGH);Delay_us(1);IIC_SCL(HIGH);Delay_us(1);while(READ_SDA)ucErrTime+;if(ucErrTime>250)IIC_Stop();return 1;IIC_SCL(LOW);return 0;void IIC_Ack(void)IIC_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()
9、;IIC_SDA(HIGH);Delay_us(2);专业资料整理WORD格式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;t<8;t+)IIC_SDA(txd&0x80)>>7);txd<<=1;Delay_us(2);IIC_SCL(HIGH);Delay_us(2);IIC_SCL(LOW);Delay_us(2);uint8_t IIC_Read_Byte(uint8_t a
10、ck)uint8_t i,receive=0;SDA_IN();for(i=0;i<8;i+ )IIC_SCL(LOW);Delay_us(2);IIC_SCL(HIGH);receive<<=1;if(READ_SDA)receive+;Delay_us(1);if (!ack)IIC_NAck();else IIC_Ack();return receive;代码片段 3 PID 控制器/50#define P_DATA 70.0专业资料整理WORD格式/25.5#define I_DATA 46.7/1.25#define D_DATA 0/以上三值需根据实际调整参数ty
11、pedef struct PIDint SetPoint;double Proportion;double Integral;double Derivative;int LastError;int PrevError;PID;void IncPIDInit(PID* sptr)sptr->LastError=0;sptr->PrevError=0;sptr->Proportion=P_DATA;sptr->Integral=I_DATA;sptr->Derivative=D_DATA;sptr->SetPoint=0;int IncPIDCalc(PID*
12、sptr,int nextPoint)int iError,iIncpid;iError=sptr->SetPoint-nextPoint;iIncpid=sptr->Proportion*iError-sptr->Integral*sptr->LastError+sptr->Derivative*sptr->PrevError;sptr->PrevError=sptr->LastError;sptr->LastError=iError;return iIncpid;代码片段 4 PWM 发生器HAL_GPIO_WritePin(Left_
13、Dir0_GPIO_Port,Left_Dir0_Pin,GPIO_PIN_SET);HAL_GPIO_WritePin(Left_Dir1_GPIO_Port,Left_Dir1_Pin,GPIO_PIN_RESET);专业资料整理WORD格式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_SetCompare(&htim2,TIM_CHANNEL_1,0); _HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,0);HAL_TIM_PWM_Start(&htim2,TIM_C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026浙江温州大学国际教育学院招聘1人考试备考试题及答案解析
- 2026江西吉安市吉水县旅游开发投资有限公司招聘场馆营业员2人考试参考试题及答案解析
- 乐清市人力资源和社会保障局公开选调1名下属事业单位工作人员考试备考题库及答案解析
- 2026福建泗华小学编外合同教师自主招聘1人考试备考试题及答案解析
- 2026年普洱市澜沧县人民法院招聘院级保障书记员及警务辅助人员(4人)考试备考题库及答案解析
- 2026福建南平市公路应急保障中心招聘1人考试参考试题及答案解析
- 2026云南迪庆州德钦县公安局招聘警务辅助人员2人考试参考题库及答案解析
- 2026内蒙古呼和浩特市爱民华瑞医院招聘笔试备考试题及答案解析
- 2026年曲靖市师宗县消防救援大队招聘政府专职消防员(30人)笔试模拟试题及答案解析
- 2026上海金山法院招录公务员8人考试备考试题及答案解析
- 人事行政部2026年年度计划
- 2026年上海市徐汇区老年大学招聘教务员备考题库完整参考答案详解
- 2025贵州贵阳产业发展控股集团有限公司招聘27人考试参考题库附答案
- 2026贵州省法院系统招聘聘用制书记员282人笔试参考题库及答案解析
- 自然资源部所属单位2026年度公开招聘工作人员备考题库(第一批634人)含答案详解
- 2025内蒙古交通集团有限公司社会化招聘168人笔试考试参考试题及答案解析
- 苏州工业园区领军创业投资有限公司招聘备考题库必考题
- 新疆2025新疆师范大学招聘事业编制人员(专任教师岗与实验教师岗)总笔试历年参考题库典型考点附带答案详解(3卷合一)
- 2025广东东莞市东城街道办事处2025年招聘23人模拟笔试试题及答案解析
- 2025年及未来5年市场数据中国硝基化合物行业投资研究分析及发展前景预测报告
- 2026年日历表含农历(2026年12个月日历-每月一张A4可打印)
评论
0/150
提交评论