把51的程序移植到STM32不能用

2019-07-14 20:30发布

我有一个51的程序,想在STM32上也实现这个功能,就把51的程序移植到STM32上,有稍微修改了一下,可是却没办法实现自己想要的功能——用IIC读数据。有没有大神帮我看一下是我移植的哪些地方出错了。十分感谢!
程序代码.rar 下载积分: 积分 -1 分
10.45 MB, 下载次数: 73, 下载积分: 积分 -1 分
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
meimengxing2014
1楼-- · 2019-07-15 03:59
1.配置好STM32的IO口(SCK推挽输出,SDA输出时开漏,输入时上拉),在IIC中SDA口是发送数据时配置成输出,接受数据时配置成输入(这点一定要注意,可以用配置寄存器的方法采用宏定义来处理)
2.IIC的时序(start:从高到低保持至少4.7us,stop:从低到高保持至少4.7us),51的时钟是12M,STM32f0最高48M,STM32f1最高72M,STM32f4最高168M,所以模拟时序中的延时是否达到要求。应答函数内的等待时间是否过短等
3.收发数据的时序
meimengxing2014
2楼-- · 2019-07-15 09:16
#define SDA_IN()  {GPIOB->MODER &= ~(0x03<<14);}                //配置PB7为输入模式
#define SDA_OUT() {GPIOB->MODER |= 0x01<<14; GPIOB->OTYPER |= 0x00<<14; GPIOB->OSPEEDR |= 0x11<<14;}//配置PB7为输出模式

这样来操作SDA的输入输出
猎国倾城
3楼-- · 2019-07-15 11:11
移植部分代码与硬件无关,与硬件有关的代码就要重新写过!或者用typedef大法!
wting136
4楼-- · 2019-07-15 12:04
我也 遇到了  同样  问题  麻烦着
baidongyu
5楼-- · 2019-07-15 16:40
 精彩回答 2  元偷偷看……
浅笑_流年
6楼-- · 2019-07-15 18:04
meimengxing2014 发表于 2016-8-13 13:22
#define SDA_IN()  {GPIOB->MODER &= ~(0x03

感谢!非常抱歉过了这么久才来表达我的谢意。

一周热门 更多>