求助关于GPIO模拟IIC通讯的问题

2019-07-20 23:42发布

我用原子个模拟的IIC程序能够读取我的芯片值,但是我换个IO口模拟就会出现读不出数据或者OXFF!这是什么情况?我只是换了端口


//#define SDA_IN()  {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=8<<12;}
//#define SDA_OUT() {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=3<<12;}
//#define SCL_OUT() {GPIOB->CRH&=0XFFFFF0FF;GPIOB->CRH|=3<<8;}
#define SCL_OUT() {GPIOB->CRH&=0XFFF0FFFF;GPIOB->CRH|=3<<16;}
#define SDA_IN()  {GPIOB->CRH&=0X0FFFFFFF;GPIOB->CRH|=8<<20;}
#define SDA_OUT() {GPIOB->CRH&=0X0FFFFFFF;GPIOB->CRH|=3<<20;}




//#define SDA_IN()  {GPIOB->CRH&=~(0XF<<(3*4));GPIOB->CRH|=8<<3*4;}
//#define SDA_OUT() {GPIOB->CRH&=~(0XF<<(3*4));GPIOB->CRH|=3<<3*4;}
//#define SDA_IN()  {GPIOB->CRH&=~(0XF<<(4*4));GPIOB->CRH|=8<<4*4;}
//#define SDA_OUT() {GPIOB->CRH&=~(0XF<<(4*4));GPIOB->CRH|=3<<4*4;}
//IO2ù×÷oˉêy         
/*#define IIC_SCL_SET GPIO_SetBits(GPIOB,GPIO_Pin_10)
#define IIC_SCL_CLR GPIO_ResetBits(GPIOB,GPIO_Pin_10)
#define IIC_SDA_SET GPIO_SetBits(GPIOB,GPIO_Pin_11)
#define IIC_SDA_CLR GPIO_ResetBits(GPIOB,GPIO_Pin_11)
#define READ_SDA   GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11) //ê&#228;è&#235;SDA */
#define IIC_SCL_SET GPIO_SetBits(GPIOB,GPIO_Pin_12)
#define IIC_SCL_CLR GPIO_ResetBits(GPIOB,GPIO_Pin_12)
#define IIC_SDA_SET GPIO_SetBits(GPIOB,GPIO_Pin_13)
#define IIC_SDA_CLR GPIO_ResetBits(GPIOB,GPIO_Pin_13)
#define READ_SDA   GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13) //ê&#228;è&#235;SDA

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
wtdwll1000
1楼-- · 2019-07-21 14:12
 精彩回答 2  元偷偷看……
Rocks
2楼-- · 2019-07-21 15:44
你不如把專案發上來吧 這程式碼有一段沒一段的很難看
wtdwll1000
3楼-- · 2019-07-21 21:19
Rocks 发表于 2015-12-28 12:00
你不如把專案發上來吧 這程式碼有一段沒一段的很難看

我最上面发的是直接改变GPIO,其他什么都没有改
山峰雪狼
4楼-- · 2019-07-22 02:51
 精彩回答 2  元偷偷看……
1201yuge
5楼-- · 2019-07-22 04:55
只需要修改两个地方:
1、是你的引脚输入输出宏定义;
2、是引脚初始化函数。
其他的不用修改。
wtdwll1000
6楼-- · 2019-07-22 09:02
 精彩回答 2  元偷偷看……

一周热门 更多>