OpenEdv-开源电子网

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

STM32 I/O 设置问题?

[复制链接]

14

主题

62

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7842
金钱
7842
注册时间
2011-10-14
在线时间
712 小时
发表于 2013-3-22 09:51:43 | 显示全部楼层 |阅读模式

stm32  I/O 问题  求教哟。设置如下:
//PA5.6为输出
#define DS1302_CLK PAout(5)//输出
#define DS1302_SDA PAout(6)//PA6双向IO口
#define DS1302_READ_SDA PAin(6)//PA6为输入

//PA6双向IO口方向设置
#define DS1302_OUT() {GPIOA->CRL&=0XF0FFFFFF;GPIOA->CRL|=3<<7;}
#define DS1302_IN()    {GPIOA->CRL&=0XF0FFFFFF;GPIOA->CRL|=8<<7;}


RCC->APB2ENR|=1<<2;//先使能外设PORTA时钟
RCC->APB2ENR|=1<<4;//先使能外设PORTC时钟     
 //PORTA5/6复用推挽输出  
 GPIOA->CRL&=0XF00FFFFF;
 GPIOA->CRL|=0X03300000;   
 GPIOA->ODR|=3<<5;

只进行如下运行:(BIN  数据无论是什么)
void DS_Shift_In(u8 bIn)
{
 u8 i;
 for( i=0;i<8;i++ )
 {
  DS1302_CLK = 0; //时钟低
  delay_us(t);
  if( bIn&0x01 ) DS1302_SDA = 1;//送数1
  else DS1302_SDA = 0; //否则送数0
  bIn = bIn>>1; //寄存器右移一位
  DS1302_CLK = 1; //时钟置1
  delay_us(t);
 }
}
输出波形如下:图中上面是DS1302_SDA线输出的, 下面是DS1302_SCL线输出的 。

现在读不出DS1302的数据,请问设置问题出在那呀?

输出波形.bmp
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

62

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7842
金钱
7842
注册时间
2011-10-14
在线时间
712 小时
 楼主| 发表于 2013-3-22 09:53:15 | 显示全部楼层
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-3-22 11:08:54 | 显示全部楼层
#define DS1302_OUT() {GPIOA->CRL&=0XF0FFFFFF;GPIOA->CRL|=3<<7;}
#define DS1302_IN()    {GPIOA->CRL&=0XF0FFFFFF;GPIOA->CRL|=8<<7;}
改为
#define DS1302_OUT() {GPIOA->CRL&=0XF0FFFFFF;GPIOA->CRL|=3<<4*6;}
#define DS1302_IN()    {GPIOA->CRL&=0XF0FFFFFF;GPIOA->CRL|=8<<4*6;}
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2013-3-22 12:27:27 | 显示全部楼层
建议 双向口 设置为 开漏输出, 外加上拉电阻,。这样就不用切换输入输出方向了
回复 支持 反对

使用道具 举报

14

主题

62

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7842
金钱
7842
注册时间
2011-10-14
在线时间
712 小时
 楼主| 发表于 2013-3-22 12:35:36 | 显示全部楼层
谢谢原子,已正常了,为什么要这样设置哟?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-3-22 14:27:29 | 显示全部楼层
回复【5楼】ssxds:
---------------------------------
好好再回去学学STM32的IO口设置。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

39

主题

156

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
417
金钱
417
注册时间
2012-12-23
在线时间
19 小时
发表于 2013-3-23 13:43:04 | 显示全部楼层
回复【5楼】ssxds:
---------------------------------
因为PA.6的IO口的设置位是GPIOA->CRL的24bit~27bit
天道酬勤
回复 支持 反对

使用道具 举报

21

主题

92

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2013-3-21
在线时间
0 小时
发表于 2013-3-24 23:01:03 | 显示全部楼层
回复【楼主位】ssxds:
---------------------------------
回复【6楼】正点原子:
---------------------------------
怎么大家都是直接设置寄存器啊    怎么不用固件库呢   这样不就不用设置的这么麻烦了吗???
努力努力
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-3-24 23:05:02 | 显示全部楼层
回复【8楼】happy:
---------------------------------
那你可以用固件库
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-22 12:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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