STM8L之修正库函数GPIO_WriteBit的Bug

发布者:浊酒最新更新时间:2019-12-17 来源: eefocus关键字:STM8L  修正库函数  GPIO_WriteBit的Bug 手机看文章 扫描二维码
随时随地手机看文章

简介


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


实验平台


编译软件:IAR for STM8 1.42.2


硬件平台:stm8l101f3p6开发板


仿真器:ST-LINK


库函数版本:STM8L_STMTouch_Lib_V1.1.0


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口能被正常拉高拉低了。

因此,实验成功。

关键字:STM8L  修正库函数  GPIO_WriteBit的Bug 引用地址:STM8L之修正库函数GPIO_WriteBit的Bug

上一篇:STM8L之timer2定时中断
下一篇:STM8L之红外发射(定时器中断产生38K信号)

推荐阅读最新更新时间:2024-11-08 10:19

STM8L探索套件学习笔记-RTC实时时钟(六)
RTC的时钟可以选择四种时钟HSE/HIS/LSE/LSI,如下图所示。相比STM32的RTC需要相关软件配合才能RTC功能。STM8L更加灵活,相关寄存器就有33个,而且是硬件实现的,缺点是没有独立的RTC供电的电源。 实时时钟的主要代码: void main(void) { u8 temp=0; /* Infinite loop */ /* Select LSE (32.768 KHz) as RTC clock source */ CLK_RTCClockConfig(CLK_RTCCLKSource_LSE, CLK_RTCCLKDiv_1); CLK_PeripheralClockConfig(CLK_Perip
[单片机]
STM8L上实现IAP(In Application Programming)
1.实现将Boot和App下载到FLASH的不同地址上,我们需要对链接脚本进行配置 IAR默认的链接脚本在安装目录下 C:\Program Files (x86)\IAR Systems\Embedded Workbench 7.0\stm8\config 找到对应芯片打开后可以看到的这样的字样: ///////////////////////////////////////////////////////////////// // Example ILINK command file for // STM8 IAR C/C++ Compiler and Assembler. // // Copy
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved