///////////////// // main routine ///////////////// void main (void) { uint8_t val; // misc variable ///////////////// // init peripherals ///////////////// // disable interrupts DISABLE_INTERRUPTS; // copy flash block w/e routines to RAM (if required) #if defined(FLASH_BLOCK_OPS) && defined(__CSMC__) _fctcpy('R'); #endif // switch to 16MHz (default is 2MHz) CLK.CKDIVR.byte = 0x00; // set option byte for PD4 as beeper output. On modification trigger SW reset val = 0; val += flash_write_option_byte(OPT2, 0x80); // option byte val += flash_write_option_byte(NOPT2, 0x7F); // complementary option byte if (val) WWDG.CR.byte = 0xBF; // on change trigger reset // init timer TIM3 for sleep_x() tim3_init(); // configure beeper pin as output (PD4) gpio_init(&PORT_D, PIN_4, OUTPUT_PUSHPULL_FAST); // enable interrupts ENABLE_INTERRUPTS; ///////////////// // main loop ///////////////// val = 1; while (1) { // beeper control beep(val, 8); // short bleep beep(0, 1000); // 1s pause // change frequency [kHz] (supported: 1,2,4) if ((val*=2) >4) val=1; } // main loop } // main
int main(void) { int ret; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2 delay_init(162);//延时初始化 tim3_init(162);//时钟初始化 sram_init();//SRAM初始化 ads1271_init(0);//ad初始化 参数为0 高速模式 led_init();//LED初始化 read_device_config();//读取flash中设备配置 current_source_init();//恒流源初始化 ethernet_init();//网络初始化 tcp_sever();//建立tcp服务器 while(!is_con());//等待连接 led_link(1);//开启连接灯 while(1) { //INT处理部分 ret = deal_int(); if((ret == NET_ERR) || (ret == NET_DISCONNECT)) sys_restart();//重启 //PRE处理部分 ret = deal_pre(); if((ret == NET_ERR) || (ret == NET_DISCONNECT)) sys_restart();//重启 //DIV处理 ret = deal_div(); if((ret == NET_ERR) || (ret == NET_DISCONNECT)) sys_restart();//重启 //STA处理 ret = deal_sta(); if((ret == NET_ERR) || (ret == NET_DISCONNECT)) sys_restart();//重启 //数据传输 while(1) { ret = deal_data(); if((ret == NET_ERR) || (ret == NET_DISCONNECT)) sys_restart();//重启 } } }
/* ================================================================================================================================== init function ==================================================================================================================================== */ void init(void){ /* Inicjalizacjia zegarów */ SystemClock_Config(); /* Inicjalizacja portu LED */ led_port_init(); /* Inicjalizacja uartu2 */ usart2_init(); //Powitanie usart2_WriteS("-->> NUCLEO L46 <<--\n\rTEST\n\rCompile time: "); usart2_WriteS(__TIME__); /* USART 1 */ // usart1_init(); /*USART 3 */ // usart3_init(); /*UART 4 */ // usart_stat = uart4_init(); /*UART 5 */ // usart_stat = uart5_init(); /* TIM2 */ //procent++; tim2_stat = tim2_init(); /* TIM3 */ tim3_stat = tim3_init(); /* TIM5 INIT */ //tim5_stat = tim5_init(); /* I2C1 INIT */ //i2c1_status = i2c_init(I2C1, 0x00702991 , I2C1_PORT_SDA , I2C1_PIN_SDA , I2C1_PORT_SCL, I2C1_PIN_SCL , I2C1_GPIO_AF); /*GPIO INIT FOR TIME MESURE */ //gpio_init(GPIOB , GPIO_PIN_8 , GPIO_MODE_OUTPUT_PP , GPIO_PULLUP); /* INIT SPI */ spi2_nRF_init(); spi3_nRF_init(); }
///////////////// // main routine ///////////////// void main (void) { uint16_t res=0; ///////////////// // init peripherals ///////////////// // disable interrupts DISABLE_INTERRUPTS; // switch to 16MHz (default is 2MHz) CLK.CKDIVR.byte = 0x00; // init timer TIM3 for sleep_x() tim3_init(); // init I2C bus for LCD i2c_init(); // enable interrupts ENABLE_INTERRUPTS; ///////////////// // main loop ///////////////// while (1) { // loop resistance for (res=0; res<256; res++) { // set resistance of potentiometer set_dig_poti((uint8_t) res); // wait a bit sleep_ms(50); } // loop res } // main loop } // main
///////////////// // main routine ///////////////// void main (void) { int8_t ret1, ret2; int16_t accX1, accY1, accZ1; int16_t accX2, accY2, accZ2; char buf[100]; uint8_t count=0, len=0; ///////////////// // init peripherals ///////////////// // disable interrupts DISABLE_INTERRUPTS; // switch to 16MHz (default is 2MHz) CLK.CKDIVR.byte = 0x00; // set default option bytes to assert bootloader is running flash_OPT_default(); // init timer TIM3 for sleep and timeout (required by I2C) tim3_init(); // init timer TIM4 for 1ms clock with interrupts tim4_init(); // init I2C bus i2c_init(); // init and reset LCD display lcd_init(); // init pins for UART1 Rx(=PA4) and Tx(=PA5) gpio_init(&PORT_A, PIN_4, INPUT_PULLUP_NOEXINT); gpio_init(&PORT_A, PIN_5, OUTPUT_PUSHPULL_FAST); // init UART1 to high speed (connected to PC on muBoard) uart1_init(230400L); // init LEDs on muBoard for visual feedback GPIO_SET(PORT_H,PIN_2|PIN_3, 1); gpio_init(&PORT_H, PIN_2|PIN_3, OUTPUT_PUSHPULL_FAST); // enable interrupts ENABLE_INTERRUPTS; // init I2C routine pointers I2C_routine(); // initialize sensors do { bno055.dev_addr = BNO055_I2C_ADDR1; ret1 = bno055_init(&bno055); ret1 |= bno055_set_power_mode(POWER_MODE_NORMAL); ret1 |= bno055_set_operation_mode(OPERATION_MODE_AMG); } while (ret1 && USE_I2C_ADDR1); do { bno055.dev_addr = BNO055_I2C_ADDR2; ret2 = bno055_init(&bno055); ret2 |= bno055_set_power_mode(POWER_MODE_NORMAL); ret2 |= bno055_set_operation_mode(OPERATION_MODE_AMG); } while (ret2 && USE_I2C_ADDR2); ///////////////// // main loop ///////////////// while (1) { // every 1ms do if (g_flagClock) { g_flagClock = 0; // every 10ms do if (g_clock > 10) { g_clock = 0; // just to be sure accX1 = accY1 = accZ1 = ret1 = 0; accX2 = accY2 = accZ2 = ret2 = 0; // read data from sensor 1 #if USE_I2C_ADDR1 bno055.dev_addr = BNO055_I2C_ADDR1; ret1 = bno055_read_accel_x(&accX1); ret1 |= bno055_read_accel_y(&accY1); ret1 |= bno055_read_accel_z(&accZ1); if (ret1 != 0) { accX1 = accY1 = accZ1 = 0; } #endif // USE_I2C_ADDR1 // read data from sensor 2 #if USE_I2C_ADDR2 bno055.dev_addr = BNO055_I2C_ADDR2; ret2 = bno055_read_accel_x(&accX2); ret2 |= bno055_read_accel_y(&accY2); ret2 |= bno055_read_accel_z(&accZ2); if (ret2 != 0) { accX2 = accY2 = accZ2 = 0; } #endif // USE_I2C_ADDR2 // send data to PC via UART1. Use SW FIFO for background operation len = 0; buf[len++] = (uint8_t)(accX1 >> 8); // x1-acc (MSB first) buf[len++] = (uint8_t) accX1; buf[len++] = (uint8_t)(accY1 >> 8); // y1-acc (MSB first) buf[len++] = (uint8_t) accY1; buf[len++] = (uint8_t)(accZ1 >> 8); // z1-acc (MSB first) buf[len++] = (uint8_t) accZ1; buf[len++] = (uint8_t)(accX2 >> 8); // x2-acc (MSB first) buf[len++] = (uint8_t) accX2; buf[len++] = (uint8_t)(accY2 >> 8); // y2-acc (MSB first) buf[len++] = (uint8_t) accY2; buf[len++] = (uint8_t)(accZ2 >> 8); // z2-acc (MSB first) buf[len++] = (uint8_t) accZ2; uart1_send_buf(len, buf); // indicate I2C status via red LED (on=ok) GPIO_SET(PORT_H,PIN_3, ret1|ret2); // show life beat via green LED if (++count > 20) { count = 0; GPIO_TOGGLE(PORT_H,PIN_2); // print to LCD sprintf(buf, "%02d %03d %03d %03d", (int) ret1, (int) accX1, (int) accY1, (int) accZ1); lcd_print(1, 1, buf); sprintf(buf, "%02d %03d %03d %03d", (int) ret2, (int) accX2, (int) accY2, (int) accZ2); lcd_print(2, 1, buf); } } // loop 10ms } // loop 1ms } // main loop