专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
嵌入式
STM32 GPIO 开漏输出 数据读取
2019-07-16 09:33
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
嵌入式Linux
10882
6
1380
大
神们好!
小弟新手一枚,关于
STM32
GPIO寄存器操作有些疑问,望大神们不吝赐教。
具体描述:1、我做DS1302实验,对端口分别设置为2个推免1个开漏输出,时钟
芯片
上加了4.7K上拉电阻,
现在的问题是我不知道该怎么来读取数据,因为我试了几种模式都无法得到正确数据。我现在对
寄存器的操作如下所示:我附图了,这里不能直接粘贴,我还上传了整个工程,希望有兴趣的大神帮我看看。
2、我在做74HC164和74HC165实验的时候,数据结果没不太对劲,望大神顺带帮我看看呗!
谢谢大家!
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时最好加延时
u8 read_ds1302_byte(u8 dat)
{
u8 i,temp;
GPIOA->ODR&=0xffdf;//GPIOA->ODR&=0<<5; //res=0;
delayms(1); //_nop_();
GPIOA->ODR&=0xfff7;//GPIOA->ODR&=0<<3;//sclk=0;
delayms(1); //_nop_();
GPIOA->ODR|=1<<5; //res=1;
delayms(1); //_nop_();
for(i=0;i<8;i++)
{
GPIOA->ODR&=0xffef;//GPIOA->ODR&=0;
GPIOA->ODR&=0xfff7;//GPIOA->ODR&=0<<3; //sclk=0;
if(dat&0x01)
GPIOA->ODR|=1<<4; //io=dat&0x01;
dat=dat>>1;
GPIOA->ODR|=1<<3; //sclk=1;
}
for(i=0;i<8;i++)
{
temp=temp>>1;
GPIOA->ODR&=0xfff7;//GPIOA->ODR&=0<<3; //sclk=0;
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4))
temp=temp|0x80;
GPIOA->ODR|=1<<3; //sclk=1;
}
GPIOA->ODR&=0xffdf;//GPIOA->ODR&=0<<5; //res=0;
delayms(1); //_nop_();
return temp;
}
复制代码
加载中...
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) 欢迎来群里共同探讨!
加载中...
一周热门
更多
>
相关问题
ARM 汇编,怎么这个export这么捣乱啊?
1 个回答
【ALIENTEK 战舰STM32开发板例程系列连载+教学】第五十八章 UCOSII实验1-任务调度
38 个回答
什么情况下会导致 自恢复保险丝 阻值出现异常?
1 个回答
【提问题,赢课程】反激开关电源设计、变压器设计及调试课程问题搜集
2 个回答
nand启动文件大于4KB,怎么解决
1 个回答
学习ARM选ARM几比较好呢?
2 个回答
这两个板到底选谁?【我决不是发广告的】
1 个回答
关于以太网IP地址如何修改?
1 个回答
相关文章
嵌入式编译生成的HEX文件和BIN文件内容详解
0个评论
嵌入式领域,FPGA的串口通信接口设计,VHDL编程,altera平台
0个评论
IMX6UL裸机实现C语言按键输入实验
0个评论
如何编写一个工程文件夹下通用的Makefile
0个评论
Linux设备树专有名词及语法规则详解(下)
0个评论
嵌入式开发之GNU的汇编语法介绍
0个评论
嵌入式开发之Putty软件的安装和使用
0个评论
嵌入式开发之SecureCRT 软件安装和使用
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
嵌入式
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
评分
查看全部评分
- u8 read_ds1302_byte(u8 dat)
- {
- u8 i,temp;
- GPIOA->ODR&=0xffdf;//GPIOA->ODR&=0<<5; //res=0;
- delayms(1); //_nop_();
- GPIOA->ODR&=0xfff7;//GPIOA->ODR&=0<<3;//sclk=0;
- delayms(1); //_nop_();
- GPIOA->ODR|=1<<5; //res=1;
- delayms(1); //_nop_();
- for(i=0;i<8;i++)
- {
-
- GPIOA->ODR&=0xffef;//GPIOA->ODR&=0;
- GPIOA->ODR&=0xfff7;//GPIOA->ODR&=0<<3; //sclk=0;
- if(dat&0x01)
- GPIOA->ODR|=1<<4; //io=dat&0x01;
- dat=dat>>1;
- GPIOA->ODR|=1<<3; //sclk=1;
- }
- for(i=0;i<8;i++)
- {
- temp=temp>>1;
- GPIOA->ODR&=0xfff7;//GPIOA->ODR&=0<<3; //sclk=0;
- if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4))
- temp=temp|0x80;
- GPIOA->ODR|=1<<3; //sclk=1;
- }
- GPIOA->ODR&=0xffdf;//GPIOA->ODR&=0<<5; //res=0;
- delayms(1); //_nop_();
- return temp;
- }
复制代码STM32 DS1302:http://bbs.ednchina.com/BLOG_ARTICLE_2137247.HTM
STM32与DS1302接口http://blog.chinaaet.com/detail/19046.html
http://www.eeworld.com.cn/mcu/2012/0913/article_10378.html
一周热门 更多>