历史上的今天
返回首页

历史上的今天

今天是:2025年04月10日(星期四)

正在发生

2019年04月10日 | STM8L库函数修正--GPIO_ReadInputDataBit

2019-04-10 来源:eefocus

使用的库:STM8L15x_StdPeriph_Driver


库函数:GPIO_ReadInputDataBit


函数原型:


BitStatus GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin)

{

   return ((BitStatus)(GPIOx->IDR & (uint8_t)GPIO_Pin));      

}


作用:读取GPIO脚的电平,被读取的IO口为低电平时返回RESET,高电平返回SET。


 


SET\RESET的定义:


typedef enum {RESET = 0, SET = !RESET} BitStatus,;


GPIO_ReadInputDataBit()函数的返回值是将(GPIOx->IDR & (uint8_t)GPIO_Pin)强制转换为BitStatus变量,按理说值只能是0或者1,而实际上高电平脚位可能是0x10,0x20,0x40,0x80这些值。


当(GPIOx->IDR & (uint8_t)GPIO_Pin)的结果是0或1以外的值时,函数的结果表达式的值超出了枚举范围,无法在枚举定义的元素值里找到对应的数据。再检查是否等于SET就会出错。


 


修改后:


BitStatus GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin)

{

  if( (GPIOx->IDR & (uint8_t)GPIO_Pin) ==0)

  {return RESET;}

  else

  {return SET;}

}

推荐阅读

史海拾趣

Everspin公司的发展小趣事

在XXXX年,Everspin的股票开始在纳斯达克全球市场交易,股票代码为MRAM。这一上市动作不仅为Everspin提供了更多的资金支持,也进一步提升了其在行业中的知名度和影响力。此外,兆易创新旗下的GigaDevice半导体(香港)有限公司还斥资500万美元购买了Everspin约5%的股份,显示出市场对Everspin技术和发展前景的认可。

American Custom Components公司的发展小趣事

American Custom Components公司自创立之初,就致力于电子元器件的创新研发。在一次技术研讨会上,公司的研发团队发现了一种新型的半导体材料,具有出色的导电性和稳定性。经过数月的实验和验证,团队成功地将这种材料应用于新产品中,推出了一款性能卓越的集成电路。这一创新技术不仅提升了公司的产品质量,还赢得了市场的广泛认可,为公司的发展奠定了坚实基础。

AUSTIN公司的发展小趣事

AUSTIN公司的创始人是赫伯特·奥斯汀(Herbert Austin)。在1905年,他制造了第一辆奥斯汀汽车,这标志着奥斯汀品牌的诞生。随着产品的推出,奥斯汀汽车很快获得了市场的认可,销量逐年攀升。直到1914年左右,奥斯汀始终是英国汽车工业的领导者,其汽车产品以高质量和可靠性而闻名。

Fairchild公司的发展小趣事

随着科技的不断进步和市场环境的变化,Fairchild公司也面临着转型和创新的挑战。为了保持竞争力和市场地位,Fairchild公司不断加大对新技术和新产品的研发投入。同时,公司也积极寻求与其他企业和研究机构的合作,共同推动半导体技术的创新和发展。通过这些努力,Fairchild公司成功实现了从传统半导体制造商向创新型科技企业的转型。

以上五个故事简要概述了Fairchild公司在电子行业发展的历程和成就。作为半导体行业的领军企业之一,Fairchild公司凭借其卓越的技术实力、创新能力和市场洞察力,为电子行业的发展做出了重要贡献。

帝特(DTECH)公司的发展小趣事

近年来,帝特积极寻求与行业内优秀企业的合作机会。2024年3月,帝特科技与技象科技在广州帝特总部签署战略合作框架协议,双方就物联网通信产品展开深入合作。这一合作不仅有助于帝特在物联网领域的技术积累和业务拓展,也为公司未来的发展注入了新的活力。

EMBEST公司的发展小趣事

XXXX年,ARM公司投资了EMBEST,双方建立了紧密的战略合作关系。这一合作不仅为EMBEST带来了更多的技术支持和资源,也进一步巩固了其在ARM开发工具领域的领先地位。通过与ARM的紧密合作,EMBEST不断推出创新产品,满足市场的多样化需求。

问答坊 | AI 解惑

DDK6001安装不了,总是提示 Remove: EULA

DDK6001安装不了,总是提示 Remove: EULA,好像是说有有不需要的一个组件已经安装,必须把它先卸载了,但是按提示操作了无数次,还是装不了,是怎么回事呢,谢谢…

查看全部问答>

有关流接口驱动程序的问题

最近调试流接口驱动程序出了些问题,麻烦论坛里的牛牛们指教,问题描述如下: 三星2440平台,wince5.0,调试ADC的流接口驱动程序,我只为了测试所以很多功能都简化了,就是往寄存器里写一次,直接读回,用了virtualalloc和virtualcopy函数映射地址 ...…

查看全部问答>

WinCE中OPENFILENAME,GetOpenFileName的使用

我在VS2005下OS Design,SDK,使用GetOpenFile出错,不知道在WinCE下到底能不能用它们?如果能,怎么用?我这样用行吗? 但出错!                  OPENFILENAMEEX  ofn; ...…

查看全部问答>

菜鸟求助

我在DEC6713开发板的基础进行设计了一块板子,准备做语音识别方面的开发,可是在电路板全部焊好上电调试时,CCS无法启动,老是出现 “Can\\\'t Initialize Target CPU; Error 0x80000200/-1031 Fatal Error during:OCS, Device driverroblem wit ...…

查看全部问答>

谁做过超声波发射电路,用的是升压中周,有谁做过吗。。帮忙指点一下电路

不知道他的工作原理(中周不了解)按着焊好,又不行。。急死了…

查看全部问答>

[转]降低 SAR ADC 驱动器的放大器功耗

    由于 SAR ADC 的功耗随着每一代新器件的推出而不断降低,放大器成了功耗敏感型应用的制约因素。那么我们如何才能进一步降低功耗?在寻找可能的解决方案之前,让我们先考虑一下 ADC 功耗降低的原因。下图 1 直接显示了我们 12 位、4MS ...…

查看全部问答>

谁有标准噪声文件啊? 求分享!!!谢谢!!

谁有标准噪声文件啊?  求分享!!!谢谢!!…

查看全部问答>

【R7F0C809】熟悉GPIO,实现led闪烁

板子的整个编译下载过程都熟悉了,工程也建好了,开始熟悉程序了,打算先从gpio开始熟悉 R7F0C809内置RL78-S1内核,这还第一次接触,不知道与我们通用的ARM的有何区别 首先吧,编译一个空的主函数看看效果 瑞萨比较让人纠结的一点就是为啥编译一 ...…

查看全部问答>