OpenEdv-开源电子网

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

請問DS1302這個接腳程式碼是在寫什麼東西???

[复制链接]

52

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
249
金钱
249
注册时间
2018-10-17
在线时间
40 小时
发表于 2024-3-2 12:21:02 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 hunkchen2000 于 2024-3-2 12:22 编辑

請位各位大陸同胞~~~~(我是持統一的~)
我參考網友給的DS1302讀寫的程式碼裡面
關於GPIO接口設定的程式碼
void Ds1302_Gpio_Init(void){    GPIO_InitTypeDef GPIO_InitStructure;    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);        //RST   
   GPIO_InitStructure.GPIO_Pin =GPIO_Pin_12;      
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出    GPIO_Init(GPIOD, &GPIO_InitStructure);   
    //CLK    GPIO_InitStructure.GPIO_Pin =GPIO_Pin_10;      
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出    GPIO_Init(GPIOD, &GPIO_InitStructure);   
    //IO    GPIO_InitStructure.GPIO_Pin =GPIO_Pin_11;     
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出    GPIO_Init(GPIOD, &GPIO_InitStructure);}


#define DS1302_RST      PDout(12)#define DS1302_CLK      PDout(10)
#define DS1302_DATIN    PDin(11)#define DS1302_DATOUT   PDout(11)




#define DS1302_DAT_INPUT()     {GPIOD->CRH &= 0XFFFF0FFF;GPIOD->CRH|=8<<12;
#define DS1302_DAT_OUTPUT()    {GPIOD->CRH &= 0XFFFF0FFF;GPIOD->CRH|=3<<12;}



請問紅色那兩行程式碼是甚麼意思????我看不懂???我大概知道是把那隻接腳設定成一下子輸出一下子讀寫的狀態,那請問一下如果我不想用PD.11,想改用PB.5那請問我應該如何改紅色部分的程式碼呢????




最佳答案

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

建议下载一个. 那是用于配置IO口工作于输入模式\输出模式的. 用寄存器的方式运行效率高,但你要去找一下哪些位对应哪个脚,如果不能理解,就用库函数GPIO_Init去配置.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8205
金钱
8205
注册时间
2020-5-11
在线时间
3700 小时
发表于 2024-3-2 12:21:03 | 显示全部楼层
建议下载一个<STM32F10xxx参考手册>.
那是用于配置IO口工作于输入模式\输出模式的.
用寄存器的方式运行效率高,但你要去找一下哪些位对应哪个脚,如果不能理解,就用库函数GPIO_Init去配置.
傲游截图20240302124255.jpg
专治疑难杂症
回复

使用道具 举报

5

主题

305

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1690
金钱
1690
注册时间
2018-11-28
在线时间
214 小时
发表于 2024-3-2 15:12:19 | 显示全部楼层
红色的两行就是宏定义
回复

使用道具 举报

5

主题

305

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1690
金钱
1690
注册时间
2018-11-28
在线时间
214 小时
发表于 2024-3-2 15:18:51 | 显示全部楼层
GPIOD->CRH|=8<<12;  操作的是PD.12吧
回复

使用道具 举报

5

主题

305

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1690
金钱
1690
注册时间
2018-11-28
在线时间
214 小时
发表于 2024-3-2 15:27:31 | 显示全部楼层
PB5输入
#define DS1302_DAT_INPUT()     {GPIOB->CRL&= 0XFF0FFFFF;GPIOB->CRL|=8<<5;}

PB5输出
#define DS1302_DAT_OUTPUT()    {GPIOB->CRL&= 0XFF0FFFFF;GPIOB->CRL|=3<<5;}
回复

使用道具 举报

52

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
249
金钱
249
注册时间
2018-10-17
在线时间
40 小时
 楼主| 发表于 2024-3-2 21:32:45 | 显示全部楼层
hzhanhai 发表于 2024-3-2 15:27
PB5输入
#define DS1302_DAT_INPUT()     {GPIOB->CRL&= 0XFF0FFFFF;GPIOB->CRL|=8CRL|=3

我試過~~~無效不能動作
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 08:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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