STM32 GPIO 开漏输出 数据读取

2019-07-16 09:33发布

神们好!
       小弟新手一枚,关于STM32GPIO寄存器操作有些疑问,望大神们不吝赐教。
       具体描述:1、我做DS1302实验,对端口分别设置为2个推免1个开漏输出,时钟芯片上加了4.7K上拉电阻,
       现在的问题是我不知道该怎么来读取数据,因为我试了几种模式都无法得到正确数据。我现在对
      寄存器的操作如下所示:我附图了,这里不能直接粘贴,我还上传了整个工程,希望有兴趣的大神帮我看看。
                2、我在做74HC164和74HC165实验的时候,数据结果没不太对劲,望大神顺带帮我看看呗!
   
QQ截图20140317105043.png QQ截图20140317105025.png
                                                                                                                                                                                     谢谢大家!
22、串行转并行实验.rar (522.31 KB, 下载次数: 61) 35、数字时钟DS1302实验.rar (683.23 KB, 下载次数: 15)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
威凌天下
1楼-- · 2019-07-16 13:03
用上拉电阻的时候不要用推挽输出,推完输出时stm32的io端口会是3.3v的电压,而不是5v。

评分

参与人数 1威望 +10 收起 理由 zhou2sheng + 10 您的付出是论坛的动力,感谢您一直支持!.

查看全部评分

sswenxh2006
2楼-- · 2019-07-16 17:50
 精彩回答 2  元偷偷看……
z00
3楼-- · 2019-07-16 19:50
读取DS1302时最好加延时

  1. u8 read_ds1302_byte(u8 dat)
  2. {
  3. u8 i,temp;
  4. GPIOA->ODR&=0xffdf;//GPIOA->ODR&=0<<5; //res=0;
  5. delayms(1);  //_nop_();
  6. GPIOA->ODR&=0xfff7;//GPIOA->ODR&=0<<3;//sclk=0;
  7. delayms(1);  //_nop_();
  8. GPIOA->ODR|=1<<5;  //res=1;
  9. delayms(1);   //_nop_();
  10. for(i=0;i<8;i++)
  11. {

  12.      GPIOA->ODR&=0xffef;//GPIOA->ODR&=0;
  13.   GPIOA->ODR&=0xfff7;//GPIOA->ODR&=0<<3;  //sclk=0;
  14.   if(dat&0x01)
  15.    GPIOA->ODR|=1<<4; //io=dat&0x01;
  16.   dat=dat>>1;
  17.   GPIOA->ODR|=1<<3; //sclk=1;
  18. }
  19. for(i=0;i<8;i++)
  20. {
  21.   temp=temp>>1;
  22.   GPIOA->ODR&=0xfff7;//GPIOA->ODR&=0<<3;   //sclk=0;
  23.   if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4))
  24.   temp=temp|0x80;
  25.   GPIOA->ODR|=1<<3;   //sclk=1;
  26. }
  27. GPIOA->ODR&=0xffdf;//GPIOA->ODR&=0<<5;   //res=0;
  28. delayms(1);  //_nop_();
  29. return temp;
  30. }
复制代码
z00
4楼-- · 2019-07-17 01:00
可以参考一下文章的代码

STM32 DS1302:http://bbs.ednchina.com/BLOG_ARTICLE_2137247.HTM

STM32与DS1302接口http://blog.chinaaet.com/detail/19046.html
hwh123
5楼-- · 2019-07-17 05:13
读取数据的引脚设为悬空输入先试试。STM32DS1302可以参考下里面
http://www.eeworld.com.cn/mcu/2012/0913/article_10378.html
p1105583274
6楼-- · 2019-07-17 05:49
你可以去群里看看 【电子产品研发交流】:(323764552) 欢迎来群里共同探讨!

一周热门 更多>