历史上的今天
今天是:2025年02月06日(星期四)
2020年02月06日 | 关于Stm8库函数使用需要格外注意的地方
2020-02-06 来源:eefocus
最近在调一个无线项目,用的是STM8003系列的单片机。调用读IO口的库函数
if(SET == GPIO_ReadInputPin(RF_DAT_GPIO_PORT ,RF_DAT_GPIO_PIN))
{
//高电平操作
}
else
{
//低电平操作
}
结果死活读不了高电平,但是使用
if(GPIO_ReadInputPin(RF_DAT_GPIO_PORT ,RF_DAT_GPIO_PIN))
{
//高电平操作
}
else
{
//低电平操作
}
却可以正确读入引脚电平
如是对这个库函数进行了跟踪发现IO口为高电平时,其返回的值不是SET而是0x64。再看SET定义为enum类型。
typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus, BitStatus, BitAction;
所以这就是一个坑,像GPIO_ReadInputPin这类函数都不能if(SET == GPIO_ReadInputPin(RF_DAT_GPIO_PORT ,RF_DAT_GPIO_PIN))否则都不能正确读到数据。而要使用if(GPIO_ReadInputPin(RF_DAT_GPIO_PORT ,RF_DAT_GPIO_PIN))才能正确读入数据。
下一篇:STM8 SPI的学习
史海拾趣
|
LabVIEW测量信号时间间隔的实现 摘要 以两路信号为例, 详细阐述了以虚拟仪器方式, 针对不同种类的信号输入硬件板卡, 使用L abV IEW 软件平台实现信 号时间间隔测量的方法。详细解释了各种方法的特点、适用范围及具体实现。另外, 也根据具体的测 ...… 查看全部问答> |
|
购买的EEWORLDC32SS开发板,CPU地址总线为32位,板载FLASH地址为0x0H-0x3ffffH,而BootLoader的地址为0h-0x0fffH,也就是说上电复位后,系统会从FLASH中读取程序,但现在FLASH的位数为16位,而DSP数据总线是32位,是不是这样就不可能上电自启动了呢 ...… 查看全部问答> |
|
具体点是 现在有多个数据过来 比如说 一号灯亮 二号等亮 三号灭 四号灭 这些是不同个信号源发送过来的 这些都是同时发送给51 能不能让51 同时记录下来 记录后打包做好标记 然后不同时刻发送出去 !! ...… 查看全部问答> |
|
进度一直是50%的同学,是不是每次点击的是上图中的片头,看完整个视频进度只有50%呢? 技术告诉我们,虽然说从片头可以直接学习课件。但是对系统来讲片头与课程是整个视频的两部分。所以,需要点一下“课程”。否则,系统会认为 “课程”这个部 ...… 查看全部问答> |
|
最近打算学习下android,看到一篇文件,转过来给大家看看~~还不错Android的原理-不需要太多的剩余内存 Android用RAM的方式,跟windows、WM、Sybiam是两回事。在Android里,RAM被用满了是件好事。它意味着你可以快速打开之前打开的软件,回到之 ...… 查看全部问答> |




