在测试易码魔盒的时候,看到里面有一个系统用户工程驱动列表,里面包含一个DS1302的程序。
手上正好有一个DS1302模块,测试一下这个功能是否好用。
建立工程文件的方式就不在赘述了。
这里直接配置DS1302的模块。
在对话框中选择上DS1302
点击这个模块,配置引脚
因为没有屏幕,所以只能是使用串口输出这个时钟信号了。波特率配置为115200.
点击生成工程文件。
如果串口不能正常工作,修改这个串口初始化代码。
GPIO_Init(GPIO1, GPIO_PIN_1,GPIO_MODE_IN_PU);
GPIO_Init(GPIO1, GPIO_PIN_3,GPIO_MODE_IN_PU);
USCI1_ITConfig(DISABLE,LOW);
USCI1_UART_Init(32000000,115200,USCI1_UART_Mode_10B,USCI1_UART_RX_ENABLE);
不知道为什么配置生成的代码,存在没有初始化。
SC_Init(); /*** MCU init***/
这里是读取DS1302和串口发送的情况。
/*<UserCodeStart>*//*<SinOne-Tag><1428>*/
Calender.year=SCD_DS1302_Read_Time(year);
/*<UserCodeEnd>*//*<SinOne-Tag><1428>*/
/*<UserCodeStart>*//*<SinOne-Tag><1561>*/
Calender.month=SCD_DS1302_Read_Time(month);
/*<UserCodeEnd>*//*<SinOne-Tag><1561>*/
/*<UserCodeStart>*//*<SinOne-Tag><1576>*/
Calender.day=SCD_DS1302_Read_Time(day);
/*<UserCodeEnd>*//*<SinOne-Tag><1576>*/
/*<UserCodeStart>*//*<SinOne-Tag><1577>*/
hou=SCD_DS1302_Read_Time(hour);
/*<UserCodeEnd>*//*<SinOne-Tag><1577>*/
/*<UserCodeStart>*//*<SinOne-Tag><1586>*/
min=SCD_DS1302_Read_Time(minute);
/*<UserCodeEnd>*//*<SinOne-Tag><1586>*/
/*<UserCodeStart>*//*<SinOne-Tag><1585>*/
sec=SCD_DS1302_Read_Time(second);
/*<UserCodeEnd>*//*<SinOne-Tag><1585>*/
/*<UserCodeStart>*//*<SinOne-Tag><1587>*/
Calender.weekday=SCD_DS1302_Read_Time(week);
/*<UserCodeEnd>*//*<SinOne-Tag><1587>*/
/*<UserCodeStart>*//*<SinOne-Tag><1480>*/
send_one(hou/10+'0');
send_one(hou%10+'0');
send_one(':');
send_one(min/10+'0');
send_one(min%10+'0');
send_one(':');
send_one(sec/10+'0');
send_one(sec%10+'0');
send_one('\r');
send_one('\n');
delay(1000);
在串口上输出的数据。
串口的发送代码
void send_one(char c)
{
USCI1_UART_SendData8(c);
while(!USCI1_GetFlagStatus(USCI1_UART_FLAG_TI));
USCI1_ClearFlag(USCI1_UART_FLAG_TI);
}
源代码就不上传了,完全是易码魔盒生成的。
|