虽然STM32F4内部带了RTC,但公司最近项目还是使用了外部时钟DS1302。以前只在51上用过,本以为在F4上移植只是简单更改一下,没想到却发现了一点问题。
硬件使用的电路和下图类似:

只不过三个IO上拉都使用了10K电阻,上拉所接的是3.3V
然后发现在同样的配置时,PA5-DIO,PA6-CLK,PA7-RST怎么也读不出来,但是使用PA3-DIO,PA2-CLK,PA1-RST或者PC0-CLK,PC1-RST,PC3-DIO就可以。
最后发现CLK和RST用哪个引脚没关系,只和DIO有关。查了资料发现PA5是TTa,而另外两种是FT。只是耐压值不同,TTa只有3.3V,FT可以有5V。但是引脚在使用时,通过示波器看到应该都是没有超过3.3V的。
配置代码:

#define DS1302_SDA_IN()                  {GPIOA->MODER &=  ~(0x11<<10);GPIOA->MODER |= 0<<10;}
#define DS1302_SDA_OUT()                {GPIOA->MODER &=  ~(0x11<<10);GPIOA->MODER |= 1<<10;}#define CE                         PAout(7)
#define SCLK                        PAout(6)
#define DATA_OUT                    PAout(5)
#define DATA_IN                     PAin(5)
void DS1302_Init(void)
{GPIO_InitTypeDef  GPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);RCC_AHB2PeriphClockCmd(RCC_APB2Periph_SPI1,DISABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_6 | GPIO_Pin_5;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHzGPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;GPIO_Init(GPIOA, &GPIO_InitStructure);
}

以上配置TTa类型引脚并不能读出数据,FT却可以。最后偶然发现更改上下拉可以解决:

#define DS1302_SDA_IN()                      GPIO_Set(GPIOA,PIN5,GPIO_MODE_IN,GPIO_OTYPE_OD,GPIO_SPEED_100M,GPIO_PUPD_PU);
#define DS1302_SDA_OUT()                    GPIO_Set(GPIOA,PIN5,GPIO_MODE_OUT,GPIO_OTYPE_OD,GPIO_SPEED_100M,GPIO_PUPD_NONE);
//GPIO_Set()见原子F4寄存器版开发例程

更改后成功读出数据,但是具体原因还未找到。

关于FT和TTa引脚作为数据IO时配置问题相关推荐

  1. 用IO口时注意是FT和TTa

    今天遇到这样的一个问题,之前功能都是没有问题的,硬件上面换了一个IO口,这次的IO口是stm32f030的PB0,这个脚作用是使能电源IC,测量开机正常时的这个IO的电压(外部电路给的)有3.7v左右 ...

  2. r语言提取列名_R语言基础(2)向量|矩阵|数组|数据框|数据IO|实用函数

    "pythonic生物人"的第85篇分享. 本文梳理R语言数据结构:向量.矩阵.数据框: 数据IO及实用函数. 本文速览

  3. 云端TensorFlow读取数据IO的高效方式

    低效的IO方式 最近通过观察PAI平台上TensoFlow用户的运行情况,发现大家在数据IO这方面还是有比较大的困惑,主要是因为很多同学没有很好的理解本地执行TensorFlow代码和分布式云端执行T ...

  4. 手游server之数据IO进化

    这里数据IO是指游戏数据存盘和读取. 假设IO处理不好.server在IO时会导致.游戏卡顿较长的时间,严重影响游戏体验. 近期服务端刚好对IO这一块做了优化,把优化过程记录一下. 一 原始版 刚開始 ...

  5. zynq文档学习之向GPIO引脚写数据

    作为实验GPIO连接MIO控制LED的前置知识,摘自ug585的14.3章 首先看14.3.1启动顺序,第一步复位(上电自动复位)和第二步时钟(时钟信号由板子提供,晶振倍频)都不用考虑,重点学习第三步 ...

  6. STM32F10×××系列的PC13、PC14、PC15引脚用作普通IO口配置方法

    1. 引脚定义 2. 引脚用作普通IO口的条件 注:最新文档中已经删除"在同一时间只有一个引脚能作为输出"也就是三个引脚可以同时作为输出引脚,其他条件未变 3. 代码 void g ...

  7. 深度学习中的TTA(Test Time Augmentation)--测试时数据增强技术

    定义:TTA(Test Time Augmentation):测试时数据增强 方法:测试时将原始数据做不同形式的增强,然后取结果的平均值作为最终结果 作用:可以进一步提升最终结果的精度 原因:如果只对 ...

  8. STM32 PB3 PB4 PA15引脚作为普通IO口使用指南

    STM32 PB3 PB4 PA15引脚作为普通IO口使用指南 stm32的PB3 PB4 PA15引脚可以在使用SWD仿真和烧录的情况下释放出来,作为普通IO口使用. 查看数据手册的引脚定义可以看到 ...

  9. 文件数据IO 的细节分析

    文件数据IO 的细节分析: 参考: Linux设备驱动开发详解:基于最新的Linux4.0内核:宋宝华编著. 编程离不开数据, 所以数据获取是编程的第一步. 1.文件打开方式 数据IO可以是阻塞式式的 ...

最新文章

  1. linux编译安装jpeg,Linux下JPEG库安装脚本(转)
  2. 【RocketMQ工作原理】
  3. asp.net oracle参数传递,asp.net – Oracle参数问题中的链接数据库
  4. 太阳能工程联箱知识_暖通设计|太阳能热水系统设计参考手册(供参考)
  5. 故人的一份连连看代码,c语言版本
  6. 盈建科弹性板6计算_硅酸钙板的安装技巧和选购技巧
  7. DevExpress GridControl 后台设置列
  8. 二、bootstrap4基础(flex布局)
  9. easycode不推荐使用_为什么?mysql不推荐使用uuid或者雪花id作为主键?
  10. 这个坑,坑死职场年轻人
  11. 编码Ascii;unicode; utf-8;utf-16;utf-32;gb2312;gbk
  12. 如何使用谷歌云盘下载Kaggle数据集+解压
  13. 程序员工作几年的一些感悟
  14. android 获取快捷开关_Android11新功能汇总,悬浮聊天气泡、快捷开关颜色可调整等...
  15. 2304558-25-4,DBCO-PEG2-acid分子量是464.5的小分子PEG试剂带有PEG连接物和DBCO基团
  16. Fiddler:显示请求花费的时间
  17. 如何用Java读取单元格的数据_Java读取Excel中的单元格数据
  18. html5 jquery paint plugin,5+最好的画板,并在画布上手动绘制JavaScript和jQuery插件
  19. 百度地图只显示你想要的部分
  20. Fortify SCA快速入门以及常见问题解决方法

热门文章

  1. CAD快速看图,如何将CAD转PDF呢?
  2. android 微信小程序 gps 飘,微信小程序 自带 GPS 定位的坑
  3. 看雪学院-OllyDBG入门系列(四)内存写入 笔记
  4. iperf udb_使用PHP脚本通过Zend Core for i5 / OS访问DB2 UDB for iSeries数据
  5. java eclipse调试提示Source not found 或 一闪而过 解决方法
  6. 阿里云备案服务号申请方法及申请条件
  7. GitHub官方代码扫描工具上线,免费查找代码漏洞 !
  8. *grep -F/f的作用*
  9. dell主板恢复出厂设置_戴尔dell电脑恢复出厂设置教程(BIOS恢复出厂设置,新版台式机)...
  10. XML快速入门的保姆级教程!!!