【STM8L】STM8L之修正库函数GPIO

    xiaoxiao2021-08-26  77

    本篇博文最后修改时间: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口能被正常拉高拉低了。 因此,实验成功。

    转载请注明原文地址: https://ju.6miu.com/read-677149.html

    最新回复(0)