STM32F103RCT6#1

实验1 F103基准实验

1.1实验内容:验证以下基本功能:两个LED(编号为LED1和LED2)每500ms交替闪烁;计算机上的串口助手每秒输出一次字符串。

(实验背景)启动车辆时,首先将变速箱从驻车挡切换到前进挡,然后松开刹车紧接着踩油门,需要加速时,将油门踩得深一些,需要减速时,油门适当松开一些。需要停车时,先松开油门,然后踩刹车,在车停稳之后将变速箱从前进挡切换到驻车挡。当然,实际开汽车还需要考虑更多的因素,本例仅为了形象地解释寄存器和固件库开发模式而将其简化了。

1.2实验原理:

1)寄存器

寄存器:CAR_GEAR(变速箱控制寄存器)

GEAR[2:0]部分位解释说明: 000-PARK(驻车挡) 001-REVERSE(倒车挡) 010-NEUTRAL(空挡) 011-DRIVE(前进挡) 100-LOW(低速挡)

寄存器:CAR_SPEED(油门控制寄存器)

SPEED[7:0]解释说明: 0表示未踩油门,255表示将油门踩到底

寄存器:CAR_BRAKE(刹车控制寄存器)

BRAKE[7:0]解释说明: BRAKE[7:0]:刹车选择 0表示未踩刹车,255表示将刹车踩到底

寄存器:CAR_WHEEL(转向盘控制寄存器)

WHEEL[7:0]部分位解释说明: 0表示方向盘向左转到底,255表示方向盘向右转到底

2)固件开发模式

设计汽车控制单元的4个固件函数:

变速箱控制函数SetCarGear、油门控制函数SetCarSpeed、刹车控制函数SetCarBrake、转向盘控制函数SetCsrWheel

int SetCarGear(Car_TypeDef*CAR,itn gear);
int SetCarSpeed(Car_TypeDef*CAR,itn speed);
int SetCarBrake(Car_TypeDef*CAR,itn brake);
int SetCarWheel(Car_TypeDef*CAR,itn wheel);

由于以上四个函数的代码实现类似,以SetCarGear为例

//Car_TypeDef定义如下:
typedef struct
{
  __IO uint32_t GEAR;
  __IO uint32_t SPEED;
  __IO uint32_t BRAKE;
  __IO uint32_t WHEEL;
}Car_TypeDef;
//CarGear_TypeDef定义如下:
typedef enum   //枚举
{
 Car_Gear_Park = 0;
 Car_Gear_Reverse,
 Car_Gear_Neutral
 Car_Gear_Drive
 Car_Gear_Low
}CarGear_TypeDef;

//·根据Car_TypeDef中指定的参数设置挡位
int SetCarGear(Car_TypeDef* CAR, int gear)//CAR 指向CAR寄存器组的首地址; gear 具体的挡位
{
    int valid = FALSE;
    if(0 <= gear && 4 >= gear)//判断是否为有效挡位
    {
        CAR->GEAR = gear;
        valid = TRUE;
    }
    return valid;
}

1.3  Keil编辑和编译以及STM32下载过程

1.4 实验步骤

步骤1:Keil软件标准化设置->步骤2:新建存放工程的文件夹->步骤3:复制和新建文件夹 ->步骤4:新建一个工程 ->步骤5:选择对应的STM32型号-> 步骤6:关闭Manage Run-Time Environment->步骤7:删除原有分组并新建分组 ->步骤8:向分组添加文件 ->步骤9:勾选UseMicroLIB ->步骤10:勾选Create HEX File-> 步骤11:添加宏定义和头文件路径->步骤12:程序编译->步骤13:通过ST-Link下载程序 ->步骤14:安装CH340驱动 ->步骤15:通过mcuisp下载程序-> 步骤16:通过串口助手查看接收数据-> 步骤17:查看STM32核心板工作状态

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值