南华大学电气工程学院课程设计(论文)
GPIOIntEnable(GPIO_PORTE_BASE,GPIO_INT_PIN_2);
GPIOIntTypeSet(GPIO_PORTE_BASE,GPIO_PIN_2,GPIO_FALLING_EDGE); }
void NRF24L01_Configure(void) {
uint8_t flag=0; SPI1_INIT();
flag=NRF_CHECK(); if(!flag) {
while(1) {
ROM_SysCtlDelay(SysCtlClockGet()/3); printf(\ failure!\\r\\n\ } }
NRF24L01_INIT();
NRF_GPIO_Interrupt_Init(); NRF_IRQ(); }
uint32_t nrf_check;
void NRF_Data_Receive(void) { uint8_t i;
NRF_IRQ(); //??3ynRFμ??D??±ê????
// printf(\TA); // printf(\ nrf_check = 0; for(i=0;i<30;i++) {
nrf_check = nrf_check + NRF24L01_RXDATA[i]; }
if((nrf_check < 250*30 ) && (nrf_check != 0 ) && ((NRF24L01_RXDATA[30] == (uint8_t)(nrf_check & 0x00ff)) && (NRF24L01_RXDATA[31] == (uint8_t)((nrf_check & 0xff00) >> 8)))) { //??êy?Y??DD?é?¤
uint8_t id=NRF24L01_RXDATA[1]; uint8_t id_str[3]; uint8_t temp_str[4]; uint8_t alarm;
uint8_t str[]=\
第38页,共69页
南华大学电气工程学院课程设计(论文)
uint8_t str_x[]=\ uint8_t str_alarm[2]; uint16_t temp; float tempture;
temp= (NRF24L01_RXDATA[3]<<8) + NRF24L01_RXDATA[2]; alarm=NRF24L01_RXDATA[4]; tempture=temp * 0.0625;
printf(\ Temp=%f alarm=%d\\r\\n\ LcdShowStr(0,0,str); id_str[2] = id+'0'; id_str[1] = id/10+'0'; id_str[0] = id/10/10+'0'; LcdShowStr(3,0,id_str);
temp =tempture *10;
temp_str[3]=temp+'0'; temp_str[2]='.';
temp_str[1]=temp/10+'0'; temp_str[0]=temp/10/10 % 10+'0'; LcdShowStr(12,0,temp_str);
LcdShowStr(0,1,str_x);
str_alarm[0]=alarm /10 +'0'; str_alarm[1]=alarm +'0'; LcdShowStr(6,1,str_alarm); } }
void EXTI_PE_Handler(void) {
uint32_t status;
status=GPIOIntStatus(GPIO_PORTE_BASE,true); GPIOIntClear(GPIO_PORTE_BASE,status); if(status & GPIO_PIN_2) {
NRF_Data_Receive(); } }
//nrf24l01.h
#ifndef _NRF24L01_H_ #define _NRF24L01_H_
第39页,共69页