基于stm32f103zet6的DS1302学习

2019-09-21来源: eefocus关键字:stm32f103zet6  DS1302

由于硬件出了问题,也就是外部低速晶振没用,震不起来,然后查看了网上的帖子,STM32的RTC果然口碑不怎么样,所以果断换DS1302,在移植的过程中还算顺利,记录下来吧,也算对自己的总结吧!

1、所谓的DS1302


这里面也指明了简单的SPI协议

然后就直接上代码了,注释很详细的!基本实现单行注释

1、主函数main


  1. #include "stm32f10x.h"      

  2. #include "SysTick。h"  

  3. #include "Delay.h"  

  4. #include "Usart.h"  

  5. #include "stdio.h"  

  6. #include "DS1302。h"  

  7. /*******由于没有做外设测试的程序是:按键PA0仅一个LED灯                                  ******/  

  8. /*******由于没有做外设测试的程序是:串口采用的是PA9->(T<->T),PA9->(R<->R)*****/  

  9. /*******由于没有做外设测试的程序是:ds1302clk <-> PA4  

  10.                                                                         ds1302dat <-> PA5  

  11.                                                                         ds1302rst <-> PA6                                      *****/  

  12.                                                                           

  13. extern uint8_t write[];  

  14. extern uint8_t read[];  

  15.   

  16. int main(void)  

  17. {  

  18.     //uint8_t time[] = {0,0,12,11,11,1,13};  

  19.     //初始化系统定时器  

  20.     SysTick_Init();  

  21.     USART1_Config();  

  22.     ds1302_GPIO_Configuration();                                                    //一定别忘记了配置GPIO  

  23.     printf("rn ("__DATE__ " - " __TIME__ ") rn");  

  24.     //ds1302_init(write,time);                                                      //设置1302的初始时间  

  25.     ds1302_data(read);  

  26.     while(1);                                                                                           //这个得加,不然的话会有尾巴是乱码!!!  

  27. }  


  1. /*******************************************************************************  

  2. ** 文件名称 : ds1302.c  

  3. ** 编译环境 : RealView MDK-ARM 4.53  

  4. ** 文件作者 :     

  5. ** 功能说明 : ds1302相关函数定义  

  6. ** 软件协议 :模拟SPI协议  

  7. ** 简介           :clk上升沿发送数据,clk下降沿接收数据  

  8.                         :typedef unsigned          char uint8_t;  

  9. **                        

  10. **                               

  11. **  

  12. *******************************************************************************/  

  13. /* 包含头文件 *****************************************************************/  

  14. #include "ds1302.h"  

  15. #include "stdio.h"  

  16. #include "Delay。h"  

  17.   

  18. uint8_t read[] = {0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};//读秒、分、时、日、月、周、年的寄存器地址  

  19. uint8_t write[] = {0x80,0x82,0x84,0x86,0x88,0x8a,0x8c};//写秒、分、时、日、月、周、年的寄存器地址  

  20. /*PA4、PA6为输出*/  

  21. /*PA5配置为开漏模式,此模式下能够实现真正的双向IO口*/  

  22. void ds1302_GPIO_Configuration(void)  

  23. {  

  24.     GPIO_InitTypeDef GPIO_InitStruct;  

  25.   

  26.     GPIO_InitStruct。GPIO_Mode = GPIO_Mode_Out_PP;  

  27.     GPIO_InitStruct.GPIO_Pin = ds1302clk|ds1302rst;         //clk、rst配置为输出  

  28.     GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;  

  29.     GPIO_Init(GPIOA, &GPIO_InitStruct);  

  30.   

  31.     GPIO_InitStruct。GPIO_Mode = GPIO_Mode_Out_OD;               //IO配置为双向  

  32.     GPIO_InitStruct.GPIO_Pin = ds1302dat;  

  33.     GPIO_Init(GPIOA, &GPIO_InitStruct);  

  34.   

  35. }  

  36.   

  37. void write_1302byte(uint8_t dat)                                            //写一个字节的数据sck上升沿写数据  

  38. {  

  39.     uint8_t i = 0;  

  40.     GPIO_ResetBits(GPIOA,ds1302clk);                                        //ds1302clk=0  

  41.       

  42.   Delay_us(2);//延时大约2us  

  43.       

  44.     for(i = 0;i < 8;i ++)  

  45.         {  

  46.             GPIO_ResetBits(GPIOA,ds1302clk);                            //ds1302clk=0;  

  47.             if(dat&0x01)  

  48.                 GPIO_SetBits(GPIOA,ds1302dat);  

  49. else //ds1302dat=(dat&0x01)

[1] [2] [3]
关键字:stm32f103zet6  DS1302 编辑:什么鱼 引用地址:http://news.2689mr.com/mcu/ic475268.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32的FSMC详解
下一篇:STM32用USART发送字符串,以USART_FLAG_TXE和USART_FLAG_TC怎么用

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

stm32f103zet6使用adc3通过dma2_5转换
#define ADC3_DR_Address    ((u32)0x40013C4C)    ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//ADC1和ADC2工作在独立模式 ADC_InitStructure.ADC_ScanConvMode = ENABLE; //使能扫描 ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;//ADC转换工作在单次模式 ADC_InitSt
发表于 2020-01-21
STM32F103ZET6学习总结
--转到定义--出现一个Browser的窗口--双击u8--跳转到stm32f10x.h:typedef uint8_t  u8;--查看uint8_t定义:typedef  unsigned char uint8_t;4.void __bis_SR_register(unsigned short){}函数功能:将CPU 中SR 寄存器中的某些位置1。其参数为屏蔽码,需要置1 的位为1。例:__bis_SR_register(LPM3_bits + GIE);//CPU进入LPM3低功耗模式,同时打开全局中断5.__no_init关键字?答:__no_init用于禁止系统启动时的变量初始化,是给LINKER
发表于 2020-01-08
stm32f103zet6芯片及其单片机(硬件)的总结
串行收发模块–2个SPI接口(18M位/秒):总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。stm32f103zet6详细参数如下:stm32f103zet6引脚图如下:stm32f103zet6引脚定义如下:芯片参考资料:STM32F10x参考手册 链接: https://pan.baidu.com/s/1w_42XGgUPvElt8XmTt1_2g 提取码: mee9单片机开发板总结一、 硬件资源说明WIRELESS 模块接口 这是开发板板载的无线模块接口(U2)W25Q128 128M FLASHSD 卡接口USB 串口/串口 1JTAG/SWD 接口24C02 EEPROMUSB 转
发表于 2019-11-06
stm32f103zet6芯片及其单片机(硬件)的总结
stm32入门——跑马灯(基于stm32f103zet6)
的驱动都要使能相应的时钟,首先看stm32系统的时钟框图经查阅资料可知,GPIO的时钟在APB2的外设时钟使能寄存器上,相关函数的定义在stm32f10x_rcc.h中 void   RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)其源代码为:void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState){  /* Check the parameters */ //检查值的有效性 
发表于 2019-10-21
stm32入门——跑马灯(基于stm32f103zet6)
stm32入门——跑马灯(基于stm32f103zet6)
的驱动都要使能相应的时钟,首先看stm32系统的时钟框图经查阅资料可知,GPIO的时钟在APB2的外设时钟使能寄存器上,相关函数的定义在stm32f10x_rcc.h中 void   RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)其源代码为:void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState){  /* Check the parameters */ //检查值的有效性 
发表于 2019-10-21
stm32入门——跑马灯(基于stm32f103zet6)
STM32F103ZET6任意频率正弦波+三角波工程源码
STM32F103输出正弦波源程序,大家可以参考下单片机源程序如下:#include "sys.h"#include "usart.h"                #include "delay.h"                  #include "key.h"         #include "
发表于 2019-10-15
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD。com。cn, Inc。 All rights reserved
送彩金500的网站大白菜不看id 爱彩送彩金 网上百家乐免费送彩金 送彩金100可提款mg游戏 银行卡送彩金 送彩金的博彩公司 博彩送彩金全讯网 2019白菜网送彩金 专属链接送彩金 免费送彩金40棋牌游戏