论坛» DIY与开源设计» 电子DIY

jokernl的进程帖!

菜鸟
2015-05-25 14:10 1楼

目录:

一:小车组装以及例程的运行

1、小车开箱

2、组装小车

3、下载程序

4、运行效果

二:我的程序

1、基于库的工程模板的建立

2、点亮LED的实验

3、电机驱动实验(电机驱动模块)

3、OLED屏幕的调试(显示模块

4、编码器显示速度测试(编码器模块)(已更新)

6、调试陀螺仪(倾角测量模块) (未更新)

7、反馈算法调试(PID模块) (未更新)


今天先来个开箱:

收到包裹内件

全部内件

)(待更新))(待更新))(待更新)http://forum.eepw.com.cn/thread/275647/1#2

院士
2015-05-25 14:16 2楼
等待后续
菜鸟
2015-05-25 14:19 3楼

组装过程完全没看教程,就看着像就装起来,组装后才发现有组装教程的PDF。。。。额


电机线长正好:

板子并不厚,下面的电池依靠卡住并挤压固定,个人感觉还是有点担心。


组装完成

比想象的小很多

小小的车车

板子上直接集成了陀螺仪和蓝牙以及电机驱动,布线不错,有点薄,稍微担心会不会被电池挤坏!

近照

菜鸟
2015-07-20 15:54 4楼

在因为忙于期末考试等原因沉寂了都快两个月了后,jokernl的学习进程要继续更新了:


今天的内容是,工程的调试下载:


第一步打开官方提供的例程:


第二步:编译和下载


如下图所示,几个按钮的用途

我先进行了编译,成功,没有什么问题:



然后接好SWD仿真器,但是下载失败了。

应该是需要改选项,点击选项图标
进入选项窗口——Debug选项卡,使用J-LINK仿真器。

在Utilities也需要更改一下。

连上J-link,可以在设备管理器里面看见:

这时候点击刚刚那个Debug选项卡的仿真器后面的setting

就会弹出如下窗口:

PORT选择SW,可以看见一个SWD仿真器。


接下来就可以下载了。


菜鸟
2015-07-26 17:56 6楼

如果出现乱码,建议修改编码即可,改成UTF8 或者GB2312,如下图:


菜鸟
2015-09-09 10:35 7楼

本来准备基于例程修改功能。

前几天看了看例程,直接寄存器操作我就不说了,操作寄存器居然是去操作地址,这代码一定是很厉害的人写了,可能是用过DSP的习惯?也可能是为了防止太多人移植,毕竟这也是人的劳动成果!

但是我作为STM32初学者对那些底层基本上看不懂呀!


决定自己重写,基于ST官方3.50的库


这是官方的库文件:

STM32F103固件库(3.5版本 )下载

这是我用库文件以及做好的工程模板:

基于3.5.0版本库的工程模板



菜鸟
2015-09-09 10:36 8楼

简单程序调试:

点蓝灯程序的main文件程序如下,工程其他和楼上的工程模板完全一样,只需要替换一下main.c即可,该程序很短,也很简单,先初始化IO口,然后再main函数中将其置低电平,即可点亮。

/** ************************** * 基于3.5.0版本库的工程模板 ************************** * 用于平衡小车的程序 * EEPW 账号:jokernl ************************** */ #include "stm32f10x.h" void LED_GPIO_Config(void) { GPIO_InitTypeDef Bule_LED; //定义GPIO结构体 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //IO时钟打开 Bule_LED.GPIO_Pin=GPIO_Pin_8; //设定管脚PB8 Bule_LED.GPIO_Mode=GPIO_Mode_Out_PP; //设定推挽输出 Bule_LED.GPIO_Speed=GPIO_Speed_50MHz; //设定50Mhz GPIO_Init(GPIOB,&Bule_LED); //进行初始化 } /** * @brief 主函数 */ int main(void) { LED_GPIO_Config(); GPIO_ResetBits(GPIOB, GPIO_Pin_8);//根据电路图知,PB8低电平时该灯点亮 while(1) { } }



菜鸟
2015-09-09 13:17 9楼

二,驱动电机正反转实验程序

看了下驱动电路的电路图,可以看见 左边电机是由 PB0 PB12 PB13 控制;右边边电机是由PB1 PB14 PB15 控制。

其中PB0/PB1为 PWM的控制,其他IO控制正反转使用。

本实验将PWM全置高,试试电机的正反转,也很简单,比楼上的点亮LED并没有复杂太多。


LED是PB8 ,电机驱动IO是PB0 PB1 PB12 PB13 PB14 PB15,都属于PB,且都为输出,为了方便初始化,我干脆写了个GPIOB的输出初始化函,参数为具体管脚,可以方便的反复调用:

/* 带参宏, 右电机相关IO */
#define PB0(on) if (on) GPIO_SetBits(GPIOB,GPIO_Pin_0); \
else GPIO_ResetBits(GPIOB,GPIO_Pin_0)
#define PB12(on) if (on) GPIO_SetBits(GPIOB,GPIO_Pin_12); \
else GPIO_ResetBits(GPIOB,GPIO_Pin_12)
#define PB13(on) if (on) GPIO_SetBits(GPIOB,GPIO_Pin_13); \
else GPIO_ResetBits(GPIOB,GPIO_Pin_13)

/* 带参宏, 左电机相关IO */
#define PB1(on) if (on) GPIO_SetBits(GPIOB,GPIO_Pin_1); \
else GPIO_ResetBits(GPIOB,GPIO_Pin_1)
#define PB14(on) if (on) GPIO_SetBits(GPIOB,GPIO_Pin_14); \
else GPIO_ResetBits(GPIOB,GPIO_Pin_14)
#define PB15(on) if (on) GPIO_SetBits(GPIOB,GPIO_Pin_15); \

其中\为续行符,就是下一行接着的意思,因为#define必须写在一行嘛,我这样写是为了看起来整齐,关于带参数宏,部分C语言初学者可能看不懂,可以参考#define_百度百科中对带参宏定义的介绍,并不难,而且用起来很方便。



接着我继续用宏定义,定义了LED的操作,以及电机的正反转或者制动操作,方便调用:

/* 带参宏,蓝灯低电平点亮, Blue_LED(1)为开蓝灯,Blue_LED(0)为关闭蓝灯 */
#define Blue_LED(on) if (on) GPIO_ResetBits(GPIOB,GPIO_Pin_8);\
else GPIO_SetBits(GPIOB,GPIO_Pin_8)

#define Motor_R(a) PB12(a);PB13(!a)//a=1 时 ,向前转,a=0时,向后转。
#define Motor_L(a) PB15(a);PB14(!a)//a=1 时 ,向前转,a=0时,向后转。
#define Motor_Rs GPIO_SetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_13) //右轮制动
#define Motor_Ls GPIO_SetBits(GPIOB,GPIO_Pin_14|GPIO_Pin_15) //左轮制动


这是一个很无脑的延时函数,仅供调试使用:

/**
* @brief 无脑延时
*/
void Delay(__IO uint32_t nCount) //简单的延时函数
{
for(; nCount != 0; nCount--);
}


下面是主函数,想初始化各个IO口,然后先后让电机正反转,这样,实验就完成了,其中亮灯关灯用来做效果对比,方便知道程序运行到哪里了,如果用SWD调试可以更方便的查看程序的运行。


/** * @brief 主函数 */ int main(void) { PB_OUT_Config(GPIO_Pin_8|GPIO_Pin_0|GPIO_Pin_13|GPIO_Pin_12|GPIO_Pin_1|GPIO_Pin_14|GPIO_Pin_15); //配置输出管脚 PB0(1); PB1(1); //电机的PWM为全高 while(1) { Blue_LED(1); //开灯 Motor_R(1); //右正转 Motor_L(0); //左反转 Delay(1000000); Motor_R(0); //右反转 Motor_L(1); //左正转 Delay(1000000); Blue_LED(0); //关灯 Motor_Rs; Motor_Ls; //制动 Delay(1000000); Delay(1000000); } }


该实验的工程文件:J_car_beta0.01(电机驱动尝试)

菜鸟
2015-09-09 17:02 10楼

屏幕的简单调试工程:

J_car_beta0.02(电机&屏幕测试)

共11条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]