最新使用STM32CubeMx搭建平衡小车代码框架文档格式.docx

上传人:b****1 文档编号:1280773 上传时间:2023-04-30 格式:DOCX 页数:17 大小:435.83KB
下载 相关 举报
最新使用STM32CubeMx搭建平衡小车代码框架文档格式.docx_第1页
第1页 / 共17页
最新使用STM32CubeMx搭建平衡小车代码框架文档格式.docx_第2页
第2页 / 共17页
最新使用STM32CubeMx搭建平衡小车代码框架文档格式.docx_第3页
第3页 / 共17页
最新使用STM32CubeMx搭建平衡小车代码框架文档格式.docx_第4页
第4页 / 共17页
最新使用STM32CubeMx搭建平衡小车代码框架文档格式.docx_第5页
第5页 / 共17页
最新使用STM32CubeMx搭建平衡小车代码框架文档格式.docx_第6页
第6页 / 共17页
最新使用STM32CubeMx搭建平衡小车代码框架文档格式.docx_第7页
第7页 / 共17页
最新使用STM32CubeMx搭建平衡小车代码框架文档格式.docx_第8页
第8页 / 共17页
最新使用STM32CubeMx搭建平衡小车代码框架文档格式.docx_第9页
第9页 / 共17页
最新使用STM32CubeMx搭建平衡小车代码框架文档格式.docx_第10页
第10页 / 共17页
最新使用STM32CubeMx搭建平衡小车代码框架文档格式.docx_第11页
第11页 / 共17页
最新使用STM32CubeMx搭建平衡小车代码框架文档格式.docx_第12页
第12页 / 共17页
最新使用STM32CubeMx搭建平衡小车代码框架文档格式.docx_第13页
第13页 / 共17页
最新使用STM32CubeMx搭建平衡小车代码框架文档格式.docx_第14页
第14页 / 共17页
最新使用STM32CubeMx搭建平衡小车代码框架文档格式.docx_第15页
第15页 / 共17页
最新使用STM32CubeMx搭建平衡小车代码框架文档格式.docx_第16页
第16页 / 共17页
最新使用STM32CubeMx搭建平衡小车代码框架文档格式.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

最新使用STM32CubeMx搭建平衡小车代码框架文档格式.docx

《最新使用STM32CubeMx搭建平衡小车代码框架文档格式.docx》由会员分享,可在线阅读,更多相关《最新使用STM32CubeMx搭建平衡小车代码框架文档格式.docx(17页珍藏版)》请在冰点文库上搜索。

最新使用STM32CubeMx搭建平衡小车代码框架文档格式.docx

Step2.配置Debug,根据实际选择

Step3.配置外部时钟信号

Step4.配置TIM2(PWM发生器)

Step5.配置模拟IIC引脚

Step6.配置电机控制引脚

Step7.配置TIM3(用作微妙延时时钟),CubeMx生成的代码中不包含微妙延时,此部分用于实现模拟IIC的微妙延时

Step8.配置USART1(用于串口调试)

Step9.时钟配置

注:

关于输入时钟一定要按实际晶振频率填写,否则会造成时序混乱;

Step10.TIM2参数配置(10KHz)

Step11.配置TIM3(微妙延时定时器)

定时器时钟频率的计算:

定时器时钟频率:

72MHz

72MHz/(PSC+1)/ARR=72/(71+1)/1=1Mhz=1us;

Step12.配置GPIO口

Step13.生成项目配置

至此,关于平衡小车的软件框架配置已全部完成,点击项目生成,进入MDK编写代码:

代码片段1:

微妙函数的实现

#include"

delay.h"

tim.h"

voidDelay_us(uint32_tus){

uint16_tcounter=us&

0xffff;

HAL_TIM_Base_Start(&

htim3);

__HAL_TIM_SetCounter(&

htim3,counter);

while(counter>

1){

counter=__HAL_TIM_GetCounter(&

}

HAL_TIM_Base_Stop(&

}

voidDelay_ms(uint32_tms){

Delay_us(1000*ms);

代码片段2模拟IIC:

#defineHIGH1

#defineLOW0

#defineSDA_IN(){GPIOB->

CRL&

=0x0FFFFFFF;

GPIOB->

CRL|=0x40000000;

#defineSDA_OUT(){GPIOB->

CRL|=0x10000000;

}

#defineIIC_SCL(n)(n?

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_SET):

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_RESET))//SCL

#defineIIC_SDA(n)(n?

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_SET):

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_RESET))//SDA

#defineREAD_SDAHAL_GPIO_ReadPin(GPIOB,GPIO_PIN_7)

voidIIC_Init(void)

{

IIC_SDA(HIGH);

IIC_SCL(HIGH);

voidIIC_Start(void)

SDA_OUT();

Delay_us(4);

IIC_SDA(LOW);

IIC_SCL(LOW);

}

voidIIC_Stop(void)

IIC_SDA(LOW);

Delay_us(4);

uint8_tIIC_Wait_Ack(void)

uint8_tucErrTime=0;

SDA_IN();

Delay_us

(1);

while(READ_SDA)

{

ucErrTime++;

if(ucErrTime>

250)

{

IIC_Stop();

return1;

}

return0;

voidIIC_Ack(void)

Delay_us

(2);

voidIIC_NAck(void)

}

voidIIC_Send_Byte(uint8_ttxd)

{

uint8_tt;

for(t=0;

t<

8;

t++)

{

IIC_SDA((txd&

0x80)>

>

7);

txd<

<

=1;

Delay_us

(2);

IIC_SCL(HIGH);

IIC_SCL(LOW);

}

uint8_tIIC_Read_Byte(uint8_tack)

uint8_ti,receive=0;

for(i=0;

i<

i++)

IIC_SCL(LOW);

Delay_us

(2);

IIC_SCL(HIGH);

receive<

if(READ_SDA)receive++;

Delay_us

(1);

}

if(!

ack)IIC_NAck();

elseIIC_Ack();

returnreceive;

代码片段3PID控制器

//50

#defineP_DATA70.0

//25.5

#defineI_DATA46.7

//1.25

#defineD_DATA0

//以上三值需根据实际调整参数

typedefstructPID{

intSetPoint;

doubleProportion;

doubleIntegral;

doubleDerivative;

intLastError;

intPrevError;

}PID;

voidIncPIDInit(PID*sptr)

sptr->

LastError=0;

PrevError=0;

Proportion=P_DATA;

Integral=I_DATA;

Derivative=D_DATA;

SetPoint=0;

intIncPIDCalc(PID*sptr,intnextPoint)

intiError,iIncpid;

iError=sptr->

SetPoint-nextPoint;

iIncpid=sptr->

Proportion*iError-\

sptr->

Integral*sptr->

LastError+\

Derivative*sptr->

PrevError;

PrevError=sptr->

LastError;

LastError=iError;

returniIncpid;

代码片段4PWM发生器

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_SetCompare(&

htim2,TIM_CHANNEL_1,0);

htim2,TIM_CHANNEL_2,0);

HAL_TIM_PWM_Start(&

htim2,TIM_CHANNEL_1);

htim2,TIM_CHANNEL_2);

更改PWM的占空比使用

HAL_TIM_SetCompare(&

htim2,TIM_CHANNEL_1,val)函数即可,其占空比的为用户设定的值除以ARR的值,即val/99+1;

即val直接等于占空比;

后记:

关于DMP的代码直接参考正点原子的MPU6050的代码即可;

重庆市普通高校“专升本”统一选拔考试大纲

《高等数学》(2019年版)

(考试科目代码20)

Ⅰ、考试大纲适用对象及考试性质

本大纲适用于重庆市普通高校“专升本”的理工类和经济类考生。

“专升本”考试结果将作为重庆市普通高校高职高专学生申请“专升本”的成绩依据。

本科院校根据考生考试成绩,按照已确定的招生计划择优录取。

因此,该考试应具有较高的

信度、效度,必要的区分度和适当的难度。

Ⅱ、考试内容及要求

一、一元函数微分学

1.理解函数概念,知道函数的表示法;

会求函数的定义域及函数值。

2.掌握函数的奇偶性、单调性、周期性、有界性。

3.理解复合函数与反函数的定义,会求单调函数的反函数。

4.掌握基本初等函数的性质与图像,了解初等函数的概念。

5.理解极限概念及性质,掌握极限的运算法则。

6.理解无穷小量与无穷大量的概念及两者的关系,掌握无穷小量的性质和无穷小量的比较。

7.了解夹逼准则与单调有界准则,掌握两个重要极限:

8.理解函数连续与间断的定义,理解函数间断点的分类,会利用连续性求极限,会判别函数间断点的类型。

9.理解闭区间上连续函数的有界性定理、最值定理、介值定理,并会用上述定理推证一些简单命题。

10.理解导数的定义及几何意义,会根据定义求函数的导数。

11.理解函数的可导与连续的关系。

12.熟练掌握基本初等函数的导数公式、导数的四则运算法则、复合函数求导法则、隐函数求导法、对数求导法及参数方程求导法,了解反函数的求导法则。

13.了解高阶导数的概念,熟练掌握初等函数的一阶和高阶导数的求法。

14.理解微分的定义、可微与可导的关系,了解微分的四则运算法则及一阶微分形式的不变性;

会求函数的微分。

15.理解罗尔(Rolle)定理、拉格朗日中值(Lagrange)定理,了解柯西(Cauchy)中值定理和泰勒(Taylor)中值定理。

会用罗尔定理证明方程根的存在性,会用拉格朗日中值定理证明一些简单不等式。

16.熟练掌握用洛必达(L’Hospital)法则求未定式的极限。

17.理解函数极值的概念、极值存在的必要条件及充分条件。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2