/* * boot() - Runs through application firmware checking, and then boots * * INPUT * none * OUTPUT * true/false whether boot was successful * */ static bool boot(void) { if(magic_ok()) { layout_home(); if(signatures_ok() == 0) /* Signature check failed */ { delay_ms(500); if(!confirm_without_button_request("Unofficial Firmware", "Do you want to continue booting?")) { layout_simple_message("Boot Aborted"); goto cancel_boot; } layout_home(); } led_func(CLR_RED_LED); cm_disable_interrupts(); set_vector_table_application(); application_jump(); } else { layout_simple_message("Please Reinstall Firmware"); goto cancel_boot; } cancel_boot: return(false); }
uint64_t time_get_ns() { uint64_t result; // keep calculating result until it is calculated without a rollover having // happened cm_disable_interrupts(); do { result = (rollovers << 24) | (0xffffff - systick_get_value()); } while(check_rollover()); cm_enable_interrupts(); return result*125/9; }
/* * main - Bootstrap main entry function * * INPUT * - argc: (not used) * - argv: (not used) * OUTPUT * 0 when complete */ int main(int argc, char* argv[]) { (void)argc; (void)argv; /* Main loop for bootloader to transition to next step */ cm_disable_interrupts(); set_vector_table_bootloader(); bootloader_jump(); bootstrap_halt(); return(0); /* Should never get here */ }
unsigned int usart_putc(char c) { cm_disable_interrupts(); unsigned int next = (tx_head + 1) % sizeof(tx_buf); if (waiting_tx_bytes() == sizeof(tx_buf)) { cm_enable_interrupts(); return 0; } tx_buf[tx_head] = c; tx_head = next; cm_enable_interrupts(); usart_enable_tx_interrupt(USART1); return 1; }
int dbg_serial_write( unsigned char *d, unsigned short n ) { int res = 0; cm_disable_interrupts(); res = dbg_fifo_write( &usart_tx_buf, d, n ); if( res && !(USART_CR1(DBG_USART) & USART_CR1_TXEIE) ) { if( dbg_fifo_read_byte( &usart_tx_buf, &usart_data ) ) { while( !(USART_SR(DBG_USART) & USART_SR_TXE) );///пока буфер не пуст usart_send(DBG_USART, usart_data); usart_enable_tx_interrupt(DBG_USART); } } cm_enable_interrupts(); return res; }
int main(void) { cm_disable_interrupts(); clk_tree_setup(); mco_setup(); clock_setup(); usb_setup(); cli_setup(); pwm_init(); led_setup(); button_setup(); ncn_setup(); cm_enable_interrupts(); while (1) { __WFI(); } return 0; }
int dbg_serial_read( unsigned char *d, unsigned short n ) { int res; res = 0; while( n-- ) { cm_disable_interrupts(); if( dbg_fifo_read_byte( &usart_rx_buf, d ) ) { cm_enable_interrupts(); d++; res++; } else { cm_enable_interrupts(); break; } } return res; }
void disable_interrupts() { cm_disable_interrupts(); }
void sys_tick_handler(void) { cm_disable_interrupts(); check_rollover(); cm_enable_interrupts(); }
void cpu_disable_int( void ) { cm_disable_interrupts(); }