OpenEdv-开源电子网

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

想通过RTC闹钟控制无线发射点亮一个LED,能否给个思路

[复制链接]

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
发表于 2013-10-5 12:00:31 | 显示全部楼层 |阅读模式
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "key.h"
#include "usart.h"
#include "exti.h"
#include "wdg.h"
#include "timer.h"
#include "pwm.h"
#include "lcd.h"
#include "rtc.h"
#include "24l01.h"
#include "spi.h"

//ALIENTEK Mini STM32开发板范例代码11
//RTC实时时钟 实验
//正点原子@ALIENTEK
//技术论坛:www.openedv.com  
 
const u8 *COMPILED_DATE=__DATE__;//获得编译日期
const u8 *COMPILED_TIME=__TIME__;//获得编译时间

const u8* Week[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};

 int main(void)
 { u8 key=0;
u8 t=0;
u8 tmp_buf[33];
u8 buffer;
SystemInit();
delay_init(72);     //延时初始化
NVIC_Configuration();
  uart_init(9600);
  LED_Init();
  KEY_Init();
LCD_Init();
RTC_Init();
  NRF24L01_Init(); 
POINT_COLOR=RED;//设置字体为红色 
LCD_ShowString(60,50,"Mini STM32 ");
LCD_ShowString(60,70,"RTC TEST");
LCD_ShowString(60,90,"ATOM@ALIENTEK");
LCD_ShowString(60,110,"2010/12/30");
//显示时间
POINT_COLOR=BLUE;//设置字体为蓝色
LCD_ShowString(60,130,"    -  -  ");   
LCD_ShowString(60,162," : :  ");    
while(1)
{    
if(t!=timer.sec)
{
t=timer.sec;
LCD_ShowNum(60,130,timer.w_year,4,16);  
LCD_ShowNum(100,130,timer.w_month,2,16);  
LCD_ShowNum(124,130,timer.w_date,2,16);  
switch(timer.week)
{
case 0:
LCD_ShowString(60,148,"Sunday   ");
break;
case 1:
LCD_ShowString(60,148,"Monday   ");
break;
case 2:
LCD_ShowString(60,148,"Tuesday  ");
break;
case 3:
LCD_ShowString(60,148,"Wednesday");
break;
case 4:
LCD_ShowString(60,148,"Thursday ");
break;
case 5:
LCD_ShowString(60,148,"Friday   ");
break;
case 6:
LCD_ShowString(60,148,"Saturday ");
break;  
}
LCD_ShowNum(60,162,timer.hour,2,16);  
LCD_ShowNum(84,162,timer.min,2,16);  
LCD_ShowNum(108,162,timer.sec,2,16);
      }
while(NRF24L01_Check())//检测不到24L01
{
LCD_ShowString(60,130,"24L01 Check Failed!");
delay_ms(500);
LCD_ShowString(60,130,"Please Check!      ");
}
while(1)//在该部分确定进入哪个模式!
{
key=KEY_Scan();  控制发射应该在这里的,是不是检测一个变量,然后闹钟定时改变那个变量
if(key==1)
{
buffer='a';   
break;
}else if(key==2)
{
buffer='b';
break;
}
}
TX_Mode();
while(1)
{      
if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
{
tmp_buf[0]=buffer;
}
delay_ms(1500);    
};  


 
};  

 }
这是我两个氮素实验的混合体,时间按复位会更新无线控制好使,但是程序进入下边的死循环,时间显示不会更新,求一个解决办法,试过如果把两个WHILE(1)去掉,时间更新了,无线就不好使了,有点乱,其实我也很乱,做个小东西做不动的感觉
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
 楼主| 发表于 2013-10-5 12:04:10 | 显示全部楼层
void RTC_IRQHandler(void)
{     
if(RTC->CRL&0x0001)//秒钟中断
{
RTC_Get();//更新时间   
//printf("CRL:%d\n",RTC->CRL);
  }
if(RTC->CRL&0x0002)//闹钟中断
{
//printf("Alarm!\n");
RTC->CRL&=~(0x0002);//清闹钟中断
  //闹钟处理                                                         在这里设置一个变量????用来检测?
}      
    RTC->CRL&=0X0FFA;         //清除溢出,秒钟中断标志
while(!(RTC->CRL&(1<<5)));//等待RTC寄存器操作完成
回复 支持 反对

使用道具 举报

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
 楼主| 发表于 2013-10-5 12:42:23 | 显示全部楼层
void RTC_IRQHandler(void) 
{       
if(RTC->CRL&0x0001)//秒钟中断 
{
RTC_Get();//更新时间    
//printf("CRL:%d\n",RTC->CRL);
  } 
if(RTC->CRL&0x0002)//闹钟中断 

//printf("Alarm!\n");
RTC->CRL&=~(0x0002);//清闹钟中断 
   //闹钟处理   

buffer='a';   到时间了直接发送 可以实现的

buffer='b';


}
TX_Mode();
while(1)   但是 会死在这里,去掉while(1)  就不好使了,这段不太明白什么意思,怎么改可以不用死循环啊
{         
if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
{

tmp_buf[0]=buffer;

}
delay_ms(1500);     
};  
                                                      
}         
    RTC->CRL&=0X0FFA;         //清除溢出,秒钟中断标志 
while(!(RTC->CRL&(1<<5)));//等待RTC寄存器操作完成
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-5 16:31:23 | 显示全部楼层
回复【楼主位】盒子:
---------------------------------
你这完全没思路啊...
你自己画个流程图先,你1楼的代码,自己分析下,看看是怎么个跑发,根据你1楼的代码,你写个流程图,就知道为什么时间不会更新了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-12 12:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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