# 嵌入式组-任务一 **Repository Path**: buaarobot_admin/embedded_group_task_1 ## Basic Information - **Project Name**: 嵌入式组-任务一 - **Description**: 用于北航机器人队嵌入式线上测试。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-07-08 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 北航机器人队 招新测试题 ------- 嵌入式篇 author: Mr.Yang WeChat: 13121203323 任务前的准备: keil程序、串口驱动程序ch340、串口调试助手、战舰V3F1 资料包、探索者F4 资料包、一块单片机及其电源线、串口线、若干传感器 tips: 以上资料都会在面试后发给大家,软件资料可以用U盘拷贝 战舰和探索者是正点原子STM32板子的名字 STM32有F1和F4的区别,主要是性能和编程细节代码不同,比如变量名不一样等 资料包中的资料足够大家的技术需求,且有许多例程供大家参考 ### 任务1: 编写一个串口通信程序,用来模拟遥控器控制车的运动 定义串口协议为: 0XAA 数据位1 数据位2 数据位3 数据位4 数据位5 数据位6 CRC校验位(换成普通数据位) 0X0D 0X0A 共十个字节。利用串口通信助手模拟遥控器发送,实现不同的功能。 提供CRC校验的函数,仅供参考。(取消CRC校验功能) ``` uint8_t CalcCRCByte(uint8_t u8Byte, uint8_t u8CRC) { uint8_t i; u8CRC = u8CRC ^ u8Byte; for (i = 0; i < 8; i++) { if (u8CRC & 0x01) { u8CRC = (u8CRC >> 1) ^ 0xD5; } else { u8CRC >>= 1; } } return u8CRC; } ``` 具体要求: 1.单片机上的接收函数100ms接收一次,即100ms更新一次接收到的信息。(利用定时器即可实现)。 2.假设控制速度的函数为motor_control(x,y,z),此函数已经写好,要求此遥控器能实时控制车的速度。 3.控制至少八个按键,即能执行至少八种不同的子任务。 - 子任务1:控制led灯亮灭 - 子任务2:控制蜂鸣器响100ms - 子任务3:用定时器输出PWM波,频率为50HZ 举例: 如果 数据位1==0x01 则执行 任务1 如果 数据位2==0x01 则执行 任务2 v_x = 数据位3,motor_control(v_x,v_y,v_z) ### 提交内容 1.提交包含keil源程序的压缩包,采用正点原子的编程风格。 2.如果未能达到题目要求,可以写一个word说明遇到的问题以及为什么没有做出来。 3.2018.07.15晚上12点之前将上述资料压缩后发到机器人队邮箱(buaajqr2018@163.com),邮件名:嵌入式组-学号-姓名,附件名同上。 ### 帮助 1.有问题可以先进行百度或者和同学商讨 2.解决不了的可以群里问相关负责人 ### 期望: 希望你们能真正理解串口通信的原理,而不是照抄例程,串口通信是一种基本的通信方式 在各类机器人中都有着重要作用,希望你们通过此任务能对STM32的基本编程方法有所了解。 ### 注: 关于题目的模糊之处,可以联系作者询问,感谢你的参与。 THE END