【STM8L】STM8L之修正库函数GPIO_WriteBit的Bug

本篇博文最后修改时间:2016年11月18日,02:54。


一、简介

本文修正STM8L的库函数GPIO_WriteBit的Bug


二、实验平台

编译软件:IAR for STM8 1.42.2

硬件平台:stm8l101f3p6开发板

仿真器:ST-LINK

库函数版本:STM8L_STMTouch_Lib_V1.1.0


版权声明

博主:甜甜的大香瓜

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

原文地址: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

四、BUG现象
通过GPIO_WriteBit函数无法控制IO的电平。

五、实验步骤
1、替换GPIO_WriteBit函数(在stm8l10x_gpio.c中)
//******************************************************************************        
//name:             GPIO_WriteBit        
//introduce:        GPIO控制位的函数     
//parameter:        GPIOx: 端口(x = A to D)  
//                  GPIO_Pin: GPIO_Pin_0~GPIO_Pin_7 
//                  GPIO_BitVal: SET or RESET                      
//return:           none      
//author:           甜甜的大香瓜             
//email:            897503845@qq.com         
//QQ group          香瓜单片机之STM8/STM32(164311667)                      
//changetime:       2016.11.18       
//******************************************************************************  
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin, BitAction GPIO_BitVal)
{
  /* Check the parameters */
  assert_param(IS_GPIO_PIN(GPIO_Pin));
  assert_param(IS_STATE_VALUE(GPIO_BitVal));

  if (GPIO_BitVal != RESET)
  {
    //SetBit(GPIOx->ODR, GPIO_Pin);//BUG语句,GPIO_Pin是按位来定义的,却被SetBit以字节来操作。
    GPIOx->ODR |= GPIO_Pin;    
  }
  else
  {
    //ClrBit(GPIOx->ODR, GPIO_Pin);//BUG语句,GPIO_Pin是按位来定义的,却被SetBit以字节来操作。
    GPIOx->ODR &= (uint8_t)(~GPIO_Pin);    
  }
}

六、实验结果
将函数修正后,IO口能被正常拉高拉低了。
因此,实验成功。




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值