OpenEdv-开源电子网

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

想移植原子哥的OLED到今年电设的瑞萨mcu上,有些困惑,求指点

[复制链接]

16

主题

85

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2013-5-15
在线时间
0 小时
发表于 2013-8-31 02:02:53 | 显示全部楼层 |阅读模式

//PB0~7,作为数据线
#define DATAOUT(x) GPIOB->ODR=(GPIOB->ODR&0xff00)|(x&0x00FF); //输出

这句话怎么理解??

然后移植过程中还有什么要注意的吗?表示移植OLED初始化函数有点蛋疼。。求指点

 

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

105

主题

522

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1386
金钱
1386
注册时间
2012-10-23
在线时间
97 小时
发表于 2013-8-31 08:55:58 | 显示全部楼层
回复 支持 反对

使用道具 举报

16

主题

85

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2013-5-15
在线时间
0 小时
 楼主| 发表于 2013-8-31 09:20:40 | 显示全部楼层
回复【2楼】miaoguoqiang:
---------------------------------
GPIOB->ODR&0xff00这是低八位为0;|后面的x&0x00FF这个不太懂。。
回复 支持 反对

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2013-8-31 10:06:44 | 显示全部楼层
(GPIOB->ODR&0xff00)这句是清零低8位ODR寄存器。
(x&0x00FF)是保留变量x的低8位数据。
二者或运算。
回复 支持 反对

使用道具 举报

16

主题

85

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2013-5-15
在线时间
0 小时
 楼主| 发表于 2013-8-31 10:30:42 | 显示全部楼层
回复【4楼】ricefat:
---------------------------------
理解~谢谢
回复 支持 反对

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2013-8-31 10:48:33 | 显示全部楼层
回复【5楼】红烧螺丝钉:
---------------------------------
我没有看原子哥的代码,可能高8位另外有用,这样操作可以避免干扰高8位的数据。
回复 支持 反对

使用道具 举报

28

主题

190

帖子

0

精华

高级会员

Rank: 4

积分
758
金钱
758
注册时间
2012-8-23
在线时间
71 小时
发表于 2013-9-2 10:36:01 | 显示全部楼层
时序调对了,就差不多了
一介草民……
回复 支持 反对

使用道具 举报

16

主题

85

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2013-5-15
在线时间
0 小时
 楼主| 发表于 2013-9-2 20:23:37 | 显示全部楼层
回复【7楼】月光疾風:
---------------------------------
现在画点函数正常,字符串也能正常 但是OLED_ShowNum不正常,,我让他显示100,他显示111,我让他显示111变成了0,这是神马问题呢?
void OLED_ShowNum(uint8_t x,uint8_t y,uint32_t num,uint8_t len,uint8_t size)
{         
uint8_t t,temp; //having been changed
uint8_t enshow=0;
uint32_t r;
r=mypow(10,len-t-1);
for(t=0;t<len;t++)
{
temp=(uint32_t)(num/r)%10;  //!!!!!!!!!!!!!!是不是这里有问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
if(enshow==0&&t<(len-1))
{
if(temp==0)
{
OLED_ShowChar(x+(size/2)*t,y,' ',size,1);
continue;
}else enshow=1; 
   
}
  OLED_ShowChar(x+(size/2)*t,y,temp+'0',size,1); 
}
}>
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-13 22:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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