【BLE】CC2541之自定义IO输出

本篇博文最后修改时间:2017年03月24日,19:45。


一、简介

本文以\SimpleBLECentral为例,介绍如何将普通IO口(P16)自定义为IO输出,实现电平翻转控制。

注:本文添加的IO口(P16)与协议栈的OLED引脚冲突,因此本文中需要关闭OLED。


二、实验平台

协议栈版本:BLE-CC254x-1.4.0

编译软件:IAR 8.20.2

硬件平台:smart RF开发板(主芯片CC2541)


版权声明

博主:甜甜的大香瓜

声明:喝水不忘挖井人,转载请注明出处。

原文地址:http://blog.csdn.NET/feilusia

联系方式:897503845@qq.com

香瓜BLE之CC2541群:127442605

香瓜BLE之CC2640群:557278427

香瓜BLE之Android群:541462902

香瓜单片机之STM8/STM32群:164311667
甜甜的大香瓜的小店(淘宝店):https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i

四、 实验前提
1、在进行本文步骤前,请先 阅读 以下博文:
暂无

2、在进行本文步骤前,请先 实现以下博文:
暂无


五、基础知识

暂无


六、实验步骤

1、编写并添加自定义的驱动

1)写一个驱动GUA_IO.c(存放在“……\BLE-CC254x-1.4.0\Projects\ble\SimpleBLECentral\Source\GUA”路径下)

//******************************************************************************                                
//name:             GUA_IO.c                   
//introduce:        香瓜自定义的IO驱动            
//author:           甜甜的大香瓜                         
//email:            897503845@qq.com             
//QQ group:         香瓜BLE之CC2541(127442605)                           
//changetime:       2017.03.24           
//******************************************************************************     
#include <ioCC2540.h>       
#include "GUA_IO.h"      

//******************************************************************************                    
//name:             GUA_IO_Control                   
//introduce:        控制IO的电平                
//parameter:        nGUA_IO_Level:GUA_IO_LEVEL_HIGH or GUA_IO_LEVEL_LOW           
//return:           none                
//author:           甜甜的大香瓜                         
//email:            897503845@qq.com             
//QQ group:         香瓜BLE之CC2541(127442605)                          
//changetime:       2017.03.24                      
//******************************************************************************   
void GUA_IO_Control(GUA_U8 nGUA_IO_Level)      
{  
  if(nGUA_IO_Level == GUA_IO_LEVEL_HIGH) 
  {
    P1_6 = 1;           
  }
  else
  {
    P1_6 = 0;   
  }
}

//******************************************************************************                    
//name:             GUA_IO_Init                   
//introduce:        IO初始化                
//parameter:        none           
//return:           none                
//author:           甜甜的大香瓜                         
//email:            897503845@qq.com             
//QQ group:         香瓜BLE之CC2541(127442605)                         
//changetime:       2017.03.24                      
//******************************************************************************   
void GUA_IO_Init(void)      
{  
  P1SEL &= ~(1 << 6);                   //P16设置为IO口    
  P1DIR |= (1 << 6);                    //P16设置为输出    
  GUA_IO_Control(GUA_IO_LEVEL_LOW);     //默认低电平    
}

2)写一个驱动头文件GUA_IO.h(存放在“……\BLE-CC254x-1.4.0\Projects\ble\SimpleBLECentral\Source\GUA”路径下)

//******************************************************************************                                
//name:             GUA_IO.h                  
//introduce:        香瓜自定义的IO驱动的头文件            
//author:           甜甜的大香瓜                         
//email:            897503845@qq.com             
//QQ group:         香瓜BLE之CC2541(127442605)                           
//changetime:       2017.03.24           
//******************************************************************************  
#ifndef _GUA_IO_H_    
#define _GUA_IO_H_    
    
/*********************宏定义************************/ 
//类型宏
#ifndef GUA_U8          
typedef unsigned char GUA_U8;          
#endif      
  
#ifndef GUA_8          
typedef signed char GUA_8;          
#endif        
        
#ifndef GUA_U16          
typedef unsigned short GUA_U16;          
#endif   
  
#ifndef GUA_16          
typedef signed short GUA_16;          
#endif           
        
#ifndef GUA_U32          
typedef unsigned long GUA_U32;          
#endif   
  
#ifndef GUA_32          
typedef signed long GUA_32;         
#endif  
  
#ifndef GUA_U64      
typedef unsigned long long GUA_U64;    
#endif  
  
#ifndef GUA_64      
typedef signed long long GUA_64;    
#endif   
    
//IO电平宏      
#define GUA_IO_LEVEL_HIGH               0x01    //高电平      
#define GUA_IO_LEVEL_LOW                0x00    //低电平    
    
/*********************外部函数************************/     
extern void GUA_IO_Control(GUA_U8 nGUA_IO_Level);    
extern void GUA_IO_Init(void);    
    
#endif 

3)工程中添加GUA_IO.c



4)在IAR设置中添加驱动源文件路径

$PROJ_DIR$\..\..\SimpleBLECentral\Source\GUA

2、在应用层中使用

1)初始化(SimpleBLECentral.c的SimpleBLECentral_Init中)

  //IO初始化
  GUA_IO_Init(); 

2)应用层代码中添加驱动头文件(SimpleBLECentral.c中)

//GUA
#include "GUA_IO.h"
//GUA

3)添加测试代码SimpleBLECentral.cSimpleBLECentral_Init

  //IO测试
  GUA_IO_Control(GUA_IO_LEVEL_HIGH);    //高电平 
  GUA_IO_Control(GUA_IO_LEVEL_LOW);     //低电平  
  GUA_IO_Control(GUA_IO_LEVEL_HIGH);    //高电平 
  GUA_IO_Control(GUA_IO_LEVEL_LOW);     //低电平  

七、注意事项

1、本文添加的IO口(P16)与协议栈的OLED引脚冲突,因此本文中需要关闭OLED。

在IAR设置宏中修改如下:

HAL_LCD=FALSE


八、实验结果

设置断点在测试代码处,并仿真全速运行至断点处。

单步执行测试代码,并用万用表测试P16的电压,可发现P16电压随测试代码变化。

因此,实验成功。


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值