/** * \brief Configure the RTT to generate an alarm at the given time. * alarm happens when CRTV value equals ALMV+1, so RTT_AR should be alarmtime - 1. * if you want to get alarm when rtt hit 0 , ALMV should be set to 0xFFFFFFFF. * * \param p_rtt Pointer to an RTT instance. * \param ul_alarm_time Alarm time,Alarm time = ALMV + 1. * * \retval 0 Configuration is done. */ uint32_t rtt_write_alarm_time(Rtt *p_rtt, uint32_t ul_alarm_time) { uint32_t flag; flag = p_rtt->RTT_MR & RTT_MR_ALMIEN; rtt_disable_interrupt(RTT, RTT_MR_ALMIEN); /** * Alarm time = ALMV + 1,If the incoming parameter * is 0, the ALMV is set to 0xFFFFFFFF. */ if(ul_alarm_time == 0) { p_rtt->RTT_AR = 0xFFFFFFFF; } else { p_rtt->RTT_AR = ul_alarm_time - 1; } if (flag) { rtt_enable_interrupt(RTT, RTT_MR_ALMIEN); } return 0; }
void terminate(const char *s) { rtc_disable_interrupt(RTC, RTC_IDR_ALRDIS);//disabilito interrupt RTC rtt_disable_interrupt(RTT, RTT_MR_RTTINCIEN);//disabilito interrupt RTT afec_disable(AFEC0);//disabilito convertitore A/D dacc_disable_channel(DACC_BASE, DACC_CHANNEL);//disabilito convertitore D/A write_record_syslog(s); write_record_syslog("Programma terminato!"); close_logfile_SD(); //chiudo logfile f_close(&syslog_file_object); //chiudo file syslog dac_out=0;//azzero tensione in uscita ioport_set_pin_level(LED_SD_USE, IOPORT_PIN_LEVEL_HIGH); //spengo led SD_USE ioport_set_pin_level(LED_SYSTEM_READY, IOPORT_PIN_LEVEL_HIGH); //spengo led SD_PRESENT ioport_set_pin_level(LED_ERROR, IOPORT_PIN_LEVEL_LOW); //accendo led ERROR exit(EXIT_SUCCESS); }
/** * \brief Configure the RTT to generate an alarm at the given time. * * \param p_rtt Pointer to an RTT instance. * \param ul_alarm_time Alarm time. * * \retval 0 Configuration is done. * \retval 1 Parameter error. */ uint32_t rtt_write_alarm_time(Rtt *p_rtt, uint32_t ul_alarm_time) { uint32_t flag; if (ul_alarm_time == 0) { return 1; } flag = p_rtt->RTT_MR & RTT_MR_ALMIEN; rtt_disable_interrupt(RTT, RTT_MR_ALMIEN); /* Alarm time = ALMV + 1 */ p_rtt->RTT_AR = ul_alarm_time - 1; if (flag) { rtt_enable_interrupt(RTT, RTT_MR_ALMIEN); } return 0; }