OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5366|回复: 9

51代码移植到stm32的问题

[复制链接]

4

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2013-10-29
在线时间
0 小时
发表于 2014-7-27 20:10:24 | 显示全部楼层 |阅读模式
5金钱
我将51的例程移植到stm32 上,虽然看了一些论坛里面的解决方法,但是还是不太懂,希望有人能够教我一下。
#define LCD_RS  Cout(8)
#define LCD_WR  Cout(7)
#define LCD_RD  Cout(6)
#define LCD_CS  Cout(9)
#define LCD_REST  Cout(10)
#define LCD_D8  Bout(0)
#define LCD_D9  Bout(1)
#define LCD_D10  Bout(2)
#define LCD_D11  Bout(3)
#define LCD_D12  Bout(4)
#define LCD_D13  PBout(5)
#define LCD_D14  PBout(6)
#define LCD_D15  PBout(7)

#define  LCD_DataPortH     P0 //高8位数据口,8位模式下只使用高8位

现在这个LCD_DataPortH是51里面的宏,不知道有什么办法能用stm32的引脚来表示这个呢 

void LCD_Writ_Bus(char VH,char VL)   //并行数据写入函数
{
    LCD_DataPortH=VH; //?
    LCD_WR=0;
    LCD_WR=1;
    LCD_DataPortH=VL;
    LCD_WR=0;
    LCD_WR=1;
}

最佳答案

查看完整内容[请看2#楼]

要对应PB0~7,很好解决. 写个函数: void port_out(u8 x) {     GPIOB->ODR&=0XFF00;    GPIOB->ODR|=x; } 用port_out代替你的LCD_DataPortH     就可以了.
学号stm32,加油加油
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-27 20:10:25 | 显示全部楼层
要对应PB0~7,很好解决.
写个函数:
void port_out(u8 x)
{
    GPIOB->ODR&=0XFF00;
   GPIOB->ODR|=x;
}
用port_out代替你的LCD_DataPortH     就可以了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

16

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
207
金钱
207
注册时间
2014-7-22
在线时间
0 小时
发表于 2014-7-27 20:36:06 | 显示全部楼层
不行,32这种是宏定义的位带操作,即把每个GPIO口的地址全部取出来分开宏定义,即控制一个地址相当于控制一个IO口,所以只能控制一个位,想要控制一组的话得直接操作整个寄存器才行,直接对整个寄存器进行赋值就可以了,51的话才可以对P0等整组IO进行赋值。
回复

使用道具 举报

4

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2013-10-29
在线时间
0 小时
 楼主| 发表于 2014-7-27 20:40:37 | 显示全部楼层
回复【2楼】潘浩锐:
---------------------------------
那我比如用0x80这个代表要写的指令,分别写到PB0-PB7上面,你看我这样做行不行。
LCD_D8=0x80&0x01(相当于把最低位取出来),类似这样的操作可以吗?
学号stm32,加油加油
回复

使用道具 举报

16

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
207
金钱
207
注册时间
2014-7-22
在线时间
0 小时
发表于 2014-7-27 20:44:14 | 显示全部楼层
你这个的话也只是控制一位而已呀
回复

使用道具 举报

4

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2013-10-29
在线时间
0 小时
 楼主| 发表于 2014-7-27 20:55:18 | 显示全部楼层
回复【4楼】潘浩锐:
---------------------------------
然后分别写每个引脚,觉得这个方法有错嘛?
学号stm32,加油加油
回复

使用道具 举报

16

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
207
金钱
207
注册时间
2014-7-22
在线时间
0 小时
发表于 2014-7-27 21:13:16 | 显示全部楼层
不可以,你这样程序会出错,只能直接LCD_D8=1;
回复

使用道具 举报

7

主题

42

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
270
金钱
270
注册时间
2014-6-30
在线时间
29 小时
发表于 2014-7-27 21:52:28 | 显示全部楼层
路过。看看,我也有移植的问题没解决。希望有帮助了,继续。
回复

使用道具 举报

4

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2013-10-29
在线时间
0 小时
 楼主| 发表于 2014-7-28 09:34:15 | 显示全部楼层
回复【6楼】潘浩锐:
---------------------------------
谢谢啦
学号stm32,加油加油
回复

使用道具 举报

4

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2013-10-29
在线时间
0 小时
 楼主| 发表于 2014-7-28 09:34:31 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
谢谢原子哥,成功了。
学号stm32,加油加油
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-4 20:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表