• 包括以下每部分:

  1. 超声波部分
  2. 继电器部分
  3. 循迹模块
  4. 按键部分
  5. 蜂鸣器部分
  6. LED指示灯部分
  • 以上六部分代码集合:

Sum_IOin-out.C文件

#include "Sum_IOin-out.h"
#include "delay.h"/*******************************************************************************
================================================================================
【平    台】stm32f103zet6_sumjess平台
【编    写】sumjess
【E-mail  】1371129880@qq.com
【软件版本】V2.0
【最后更新】2018年09月06日
【相关信息参考下列地址】
【网    站】https://blog.csdn.net/qq_38351824http://www.openedv.com/http://www.stmcu.org/http://www.firebbs.cn/forum.php
---------------------------------------------------------------------------------
【dev.env.】MDK5.14及以上版本
【Target  】stm32f103zet6
第一次修订:2017/11/09
第二次修订:2018/01/21
第三次修订:2018/09/06
---------------------------------------------------------------------------------
没有完美的代码,只有不断的奉献,大家一起努力;
赠人玫瑰手留余香,欢迎大家反馈bug!
================================================================================
********************************************************************************/
//LED、BEEP、relay、key、track驱动代码  ///LED IO初始化/
初始化PF0-PF2为输出口.并使能这两个口的时钟//         void LED_Init(void)
{ GPIO_InitTypeDef  GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE); //使能PF端口时钟GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_0|             //RGB灯端口配置GPIO_Pin_1|GPIO_Pin_2; GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;          //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //IO口速度为50MHzGPIO_Init(GPIOF, &GPIO_InitStructure);                           //根据设定参数初始化GPIOFGPIO_SetBits(GPIOF,GPIO_Pin_0);                                 //PF0输出高电平GPIO_SetBits(GPIOF,GPIO_Pin_1);                                   //PF1输出高电平GPIO_SetBits(GPIOF,GPIO_Pin_2);                                   //PF2输出高电平
}//--------------------------------------------------------------------------------------------///蜂鸣器初始化///
初始化PB8为输出口.并使能这个口的时钟            void BEEP_Init(void)
{ GPIO_InitTypeDef  GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOB端口时钟GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_8;                 //BEEP-->PB.8 端口配置GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;     //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     //速度为50MHzGPIO_Init(GPIOB, &GPIO_InitStructure);                   //根据参数初始化GPIOB.8GPIO_ResetBits(GPIOB,GPIO_Pin_8);//输出0,关闭蜂鸣器输出
}//--------------------------------------------------------------------------------------------////Relay IO初始化
初始化PF3-PF4为输出口.并使能这两个口的时钟//         void Relay_Init(void)
{ GPIO_InitTypeDef  GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE); //使能PF端口时钟GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_3|           //继电器端口配置GPIO_Pin_4; GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;        //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //IO口速度为50MHzGPIO_Init(GPIOF, &GPIO_InitStructure);                           //根据设定参数初始化GPIOFGPIO_SetBits(GPIOF,GPIO_Pin_3);                                 //PF3输出高电平GPIO_SetBits(GPIOF,GPIO_Pin_4);                                   //PF4输出高电平
}//--------------------------------------------------------------------------------------------////4*4按键初始化/
///初始化PF6-13为输出口.并使能这两个口的时钟     void key44_Init(void)
{GPIO_InitTypeDef  GPIO_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE);     //使能PF端口时钟GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;                                     //端口配置GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_Out_PP;                   //推挽输出GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;                       //IO口速度为50MHzGPIO_Init(GPIOF, &GPIO_InitStruct);                                            //根据设定参数初始化GPIOFGPIO_InitStruct.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13;                                    //端口配置GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_IPD;                          //下拉输入GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;                       //IO口速度为50MHzGPIO_Init(GPIOF, &GPIO_InitStruct);                                            //根据设定参数初始化GPIOF}/**-------------------------------------------------------------* @函数名 STM32_KEYScan* @功能   获取KEY按键的输入电平状态,按键按下时为低电平0* @参数   无* @连接   将模块正面朝上,顺次插入即可。* @返回值 1  对应开发板上第一个KEY按键处于按下状态*         2  对应开发板上第二个KEY按键处于按下状态*         3  对应开发板上第三个KEY按键处于按下状态*         4  对应开发板上第四个KEY按键处于按下状态*         0  开发板上没有KEY按键处于按下状态* @参数说明   ( GPIOF->ODR & 0xfc3f )    将PF6-PF9在ODR对应的位清零,然后赋值
***-------------------------------------------------------------*/
int STM32_KEYScan(void) //实现矩阵键盘。返回值为各按键的键值,此键值由用户自己定义。
{u8 KeyVal;  //keyVal为最后返回的键值。GPIO_Write(GPIOF,(( GPIOF->ODR & 0xFC3F ) | 0x0040));  //让PF6到PF9输出二进制的0001.switch(GPIOF->IDR & 0x3C00)//对PF10到PF13的值进行判断,以输出不同的键值。{case 0x0400: KeyVal=1;  break;case 0x0800: KeyVal=2;   break;case 0x1000: KeyVal=3;   break;case 0x2000: KeyVal='A';break;}GPIO_Write(GPIOF,(( GPIOF->ODR & 0xFC3F ) | 0x0080));    //让PF6到PF9输出二进制的0010switch(GPIOF->IDR & 0x3C00)              //对PF10到PF13的值进行判断,以输出不同的键值。{case 0x0400: KeyVal=4; break;case 0x0800: KeyVal=5;   break;case 0x1000: KeyVal=6;   break;case 0x2000: KeyVal='B';break;}GPIO_Write(GPIOF,(( GPIOF->ODR & 0xFC3F ) | 0x0100));    //让PF6到PF9输出二进制的0100switch(GPIOF->IDR & 0x3C00)              //对PF10到PF13的值进行判断,以输出不同的键值。{case 0x0400: KeyVal=7; break;case 0x0800: KeyVal=8;   break;case 0x1000: KeyVal=9;   break;case 0x2000: KeyVal='C';break;}GPIO_Write(GPIOF,(( GPIOF->ODR & 0xFC3F ) | 0x0200));    //让PF6到PF9输出二进制的1000switch(GPIOF->IDR & 0x3C00)              //对PF10到PF13的值进行判断,以输出不同的键值。{case 0x0400: KeyVal='*'; break;case 0x0800: KeyVal=0;     break;case 0x1000: KeyVal='#'; break;case 0x2000: KeyVal='D';   break;}                                   return KeyVal;
}//--------------------------------------------------------------------------------------------////循迹模块初始化
///初始化PB8-11为输出口.并使能这两个口的时钟     void track_Init(void)
{GPIO_InitTypeDef  GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); //使能PE端口时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|             //循迹模块PE2~PE9端口配置GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IN_FLOATING;//浮空输入GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      //IO口速度为50MHzGPIO_Init(GPIOE, &GPIO_InitStructure);                           //根据设定参数初始化GPIOE}//--------------------------------------------------------------------------------------------///初始化成功/   void Init_success(void)
{BEEP_ON;LED_G_ON;delay_ms(100);LED_G_OFF;delay_ms(100);LED_R_ON;delay_ms(100);LED_R_OFF;delay_ms(100);LED_B_ON;delay_ms(100);LED_B_OFF;delay_ms(100); BEEP_OFF;}

Sum_IOin-out.h文件

/*******************************************************************************
================================================================================
【平    台】stm32f103zet6_sumjess平台
【编    写】sumjess
【E-mail  】1371129880@qq.com
【软件版本】V2.0
【最后更新】2018年09月06日
【相关信息参考下列地址】
【网    站】https://blog.csdn.net/qq_38351824http://www.openedv.com/http://www.stmcu.org/http://www.firebbs.cn/forum.php
---------------------------------------------------------------------------------
【dev.env.】MDK5.14及以上版本
【Target  】stm32f103zet6
第一次修订:2017/11/09
第二次修订:2018/01/21
第三次修订:2018/09/06
---------------------------------------------------------------------------------
没有完美的代码,只有不断的奉献,大家一起努力;
赠人玫瑰手留余香,欢迎大家反馈bug!
================================================================================
********************************************************************************/
//LED、BEEP、relay、key、track驱动代码
#ifndef __SUM_INIO_OUT_H
#define __SUM_INIO_OUT_H
#include "sys.h"#define BEEP_ON  GPIO_SetBits(GPIOB,GPIO_Pin_8)
#define BEEP_OFF GPIO_ResetBits(GPIOB,GPIO_Pin_8)#define LED_R_OFF  GPIO_SetBits(GPIOF,GPIO_Pin_0)
#define LED_R_ON   GPIO_ResetBits(GPIOF,GPIO_Pin_0)
#define LED_G_OFF  GPIO_SetBits(GPIOF,GPIO_Pin_1)
#define LED_G_ON   GPIO_ResetBits(GPIOF,GPIO_Pin_1)
#define LED_B_OFF  GPIO_SetBits(GPIOF,GPIO_Pin_2)
#define LED_B_ON   GPIO_ResetBits(GPIOF,GPIO_Pin_2)#define Relay_A_OFF  GPIO_SetBits(GPIOF,GPIO_Pin_3)
#define Relay_A_ON   GPIO_ResetBits(GPIOF,GPIO_Pin_3)
#define Relay_B_OFF  GPIO_SetBits(GPIOF,GPIO_Pin_4)
#define Relay_B_ON   GPIO_ResetBits(GPIOF,GPIO_Pin_4)void LED_Init(void);
void BEEP_Init(void);
void Relay_Init(void);
void key44_Init(void);int STM32_KEYScan(void);
void track_Init(void);
void Init_success(void);#endif

FoodDelivered-Robot---送餐机器人(六)模块驱动代码---IO采集部分相关推荐

  1. 送餐机器人市场达11.6亿 美团将成“搅局者”?

    近几年来,机器人事业发展越来越迅速,在工业.农业.服务业等众多领域中都可以看到机器人的身影.随着时代的不断进步,餐饮文化的发展势如破竹,同时在餐厅中也可以看到送餐机器人的不断应用. 据数据统计,到20 ...

  2. 【论文笔记】基于 ROS 的送餐机器人自主抓取实现

    目录 摘要 关键词 1 主要任务 2 六自由度机械臂的二次开发 2.1 用户向控制板发送数据 CMD_SERVO_MOVE参数指令 2.2 控制板向用户返回数据 3 基于 Tsai-Lenz 算法的自 ...

  3. 无轨送餐机器人_送餐机器人原理

    随着科技发展水平的提高,服务机器人有了更快的发展,并开始广泛应用餐饮.酒店.商场等商业领域.服务机器人在机器人市场的需求日益高涨,成为未来机器人发展的一个重要方向,也是我国开展机器人技术研究的重要突破 ...

  4. 送餐机器人被解雇,人工智能“人性”待进化

    广州送餐机器被解雇,人工智能研发有待提高. 小编之前介绍了AI2对人工智能的美好愿景,然而,近日广州送餐机器人被炒事件让我们意识到人工智能的乌托邦离我们还有一定的距离. 不可否认,人工智能方便了我们日 ...

  5. 送餐机器人---取餐完成的确认方式

    文章目录 1. 共性设计---超时机制 2. 贝叶斯送餐机器人(2020年中)---触摸头顶的触摸按键 3. 擎朗T8送餐机器人(2021年底发布)----摄像头智能判断 4.普渡贝拉(2020年底发 ...

  6. 印度孟买机器人餐厅_2020,送餐机器人的海外市场爆发之年

    餐饮是民生基本,方便快捷是生活指数的本钱,送餐机器人作为提升餐饮行业运营效率的利器.智慧餐饮的重要代表,其发展显得尤为重要.据专家预测, 2020 将是送餐机器人的海外爆发之年. 天时地利:智能之光, ...

  7. 宁波送餐机器人_重磅合作丨擎朗送餐机器人进驻外婆家,让等餐顾客不再流失...

    近日,餐饮服务机器人领导品牌擎朗智能与外婆家餐饮集团达成深度合作,强强联合,两大品牌跨界牵手共同服务消费者.通过餐厅等位区送小吃机器人,给顾客配送美食,同时缓解顾客等待的急躁情绪,让排队时间变得丰富有 ...

  8. 送餐机器人 | 美格智能5G智能模组助力无人送餐“如有神助”

    近几年来,随着人工智能技术的愈加成熟,人工智能在我们的生活中得到了广泛的应用,在社会生产.生活等各个领域都发挥着重要的作用.在中国消费占据重比的餐饮消费市场,依托人工智能技术研发的送餐机器人应用趋势也 ...

  9. 宁波送餐机器人_宁波这家酒店有了机器人服务员 卖萌、引路、送餐样样行

    机器人服务员 酒店工作人员向机器人服务员输入指令. 机器人服务员正在执行客房送物任务. 中国宁波网讯(宁波晚报记者 谢舒奕)"我是这个酒店的机器人服务员,麻烦把电梯中间的位置留给我,谢谢您. ...

  10. 送餐机器人定位系统设计

    目前开源的ORBSLAM,VINS等视觉定位系统都会存在强光干扰,黑暗环境干扰,环境中的白墙等影响,这是目前机器人产品中的一个痛点. 由于环境中存在各种干扰,因此实现一个鲁棒稳定的定位系统是一款机器人 ...

最新文章

  1. [译] Swift 中的惰性序列及其原理
  2. iOS UIScreen详解
  3. Centos8 yum 阿里源配置
  4. C#语言学习思维导图
  5. 转-测试用例-常用控件
  6. POJ1155 TELE(树形DP)
  7. 程序编号以后计算机能够查出,华威大学研究人员开发出计算机程序,可发现量子计算机中的“泄漏”...
  8. 【实习之T100开发】T100 单档程序开发(1)开发流程
  9. 端口tagged和untagged详解
  10. Oracle的云计算模式
  11. 服务器显示叹号DASD,ibm system x3850 x5服务器DASD亮橙色灯怎么处理
  12. Excel对比重复项
  13. 设置电脑分屏显示的4种情况
  14. 农村市场谋定中国农民丰收节交易会 消费潜力持续正释放
  15. 苹果手机怎么信任软件_苹果安装未受信任软件如何设置信任企业APP证书
  16. Unhandled exception in al.exe(KERNELBASE.DLL):0xE06D7363:Microsoft C++Exception
  17. 0-SIM卡的迭代(SIM-USIM-eSIM-vSIM-softSIM)
  18. 使用navicat导入SQL语句的教程
  19. Coding and Paper Letter(七十)
  20. wireshark 抓包使用教程

热门文章

  1. 抖音小店无货源,如何找到适合自己店铺的达人,精选联盟玩法分享
  2. 聚名师之力,扬信息之帆,逐教育现代化浪潮——韶关市教育信息化蓝凌名教师工作室挂牌仪式
  3. Redis Key(键) 命令使用
  4. redis实战 migrate异常NOAUTH Authentication required.
  5. link与@import自己的一些愚见
  6. 如何将livp文件转换为jpeg图片格式
  7. c语言.jpg图片转成数组_pdf怎么转成jpg最简单 mac
  8. crmeb v4.4.2 修复前端小程序物流查询有部分查询不出来的问题
  9. 近端梯度法(Proximal Gradient Method, PG)
  10. mysql 月初 月末_月初 月末 sql 语句(日期所在月的第一天,最后一天)