历史上的今天
今天是:2024年12月17日(星期二)
2019年12月17日 | STM8L之修正库函数GPIO_WriteBit的Bug
2019-12-17 来源:eefocus
简介
本文修正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口能被正常拉高拉低了。
因此,实验成功。
史海拾趣
|
市场上有S3C,TI,Freescale等不同品牌的产品,但是那一款比较适合做消费电子产品,下面我给大家做个分析。S3C的开发板产品价格相对较低,受到很多高校的钟爱,但是,要知道作为工程师必须使用和了解高端的产品,像这种给高校用来做基础教育的产品 ...… 查看全部问答> |
|
学了DSP一段时间,感觉嵌入式软件开发好像全是软件的问题呢。 可能是因为我用的学校提供的现成的试验箱吧,功能比较齐全,北京合众达的DM643的箱子。 从学习DSP开始,都觉得在跑例程、改写、编写程序中,困难最多的都是软件方面的问题,像是基本语法、 ...… 查看全部问答> |
|
各位大大,知道怎样在UC/OS II 中实现route add , rout delete之类的路由函数功能? 或者这些函数的原型是怎么样的? 谢谢!… 查看全部问答> |
|
linux中一个文件都有一个dentry和一个inode,这两个结构是VFS根据具体文件系统磁盘上的信息在内存中建立的数据结构,我这么理解对吧?我们在mount一个文件系统的时候,系统应该负责建立这些dentry和inode吧?那如果一个磁盘包括的文件数很多,那么内 ...… 查看全部问答> |
|
为什么NokiaBB5系列无法解网络? 比如说绑定美国cingular的Nokia E62 我做了很多搜索,没找到可以解锁的办法。(除了向cingular索取解锁密码) 在下学浅,觉得电话跟电脑差不多,如果靠密码能解锁的话,一定是软件上的限制,重写成出厂设置应该 ...… 查看全部问答> |
|
MCU输出主时钟给音频ADC芯片,让ADC芯片工作在master 模式,产生standerd philips I2S格式(64FS,FS=48K),但从MCU端看,接收到的数据有错位情况。 举例:MCU I2S配置如下,I2S时钟误差为0, I2S_InitStructure.I2S_Standard = I2S_Standa ...… 查看全部问答> |
|
对于IIC来说只有两条线来控制数据的传输,SDA和SCL。对于IIC协议的学习,要掌握四种模式,主发送,主接收,从发送和从接收。在对设备的读写操作信号是在发送从地址时将其一起发送出去,比如主发送模式,它要从从设备中读取数据,那么在主设 ...… 查看全部问答> |




