#include "xc_hal.h" #include "uart.h" #include "radar.h" uint8_t rad_txbuff[16] = {0}; uint8_t rad_rxbuff[16] = {0}; uint8_t rad_flag = 1; uint8_t rad_ccc = 1; uint16_t rad_aaa = 100; uint32_t rad_bbb = 30; static uint8_t cmd_setval(uint32_t setval, uint8_t save) { rad_txbuff[0] = 0xA1; rad_txbuff[1] = 0x07; rad_txbuff[2] = setval >> 8; rad_txbuff[3] = setval & 0xFF; rad_txbuff[4] = 0x00; rad_txbuff[5] = 0x02; rad_txbuff[6] = 0x00; rad_txbuff[7] = 0x00; rad_txbuff[8] = (save!=0)?1:0; return uart_trx(rad_txbuff, rad_rxbuff); } static uint8_t cmd_getval(uint32_t *getval) { rad_txbuff[0] = 0xA2; rad_txbuff[1] = 0x00; if(uart_trx(rad_txbuff, rad_rxbuff)) { *getval = rad_rxbuff[2]<<8|rad_rxbuff[3]; return 1; } return 0; } static uint8_t cmd_setflag(uint8_t flag) { rad_txbuff[0] = 0xA3; rad_txbuff[1] = 0x01; rad_txbuff[2] = flag; return uart_trx(rad_txbuff, rad_rxbuff); } static uint8_t cmd_getflag(uint8_t *data) { rad_txbuff[0] = 0xA4; rad_txbuff[1] = 0x00; if(uart_trx(rad_txbuff, rad_rxbuff)) { *data = rad_rxbuff[2]; return 1; } return 0; } //À×´ï³õʼ»¯ uint8_t radar_init(uint32_t setbase, uint16_t setper, uint8_t save) { uint8_t enable = 0; uint32_t setval = 0; rad_flag = save; if(setper & 0x8000) { enable = 0; setval = 255; } else { enable = 1; setval = (uint64_t)(setbase * setper) / 100; if(setval > 255) setval = 255; } if(!cmd_setflag(enable)) { return 0; } rad_ccc = enable; delay_ms(40); if(!cmd_setval(setval, save)) { return 0; } rad_bbb = setval; rad_aaa = setper; return 1; } uint8_t radar_setbase(uint32_t setbase) { return radar_init(setbase, rad_aaa, rad_flag); } void radar_readval(uint16_t *data) { data[0] = (hal_rad_get())?1023:0; data[1] = data[0]; } void radar_getper(uint8_t *data) { data[0] = rad_aaa & 0xFF; data[1] = rad_aaa >> 8; } void radar_getcfg(uint8_t *data) { cmd_getval(&rad_bbb); cmd_getflag(&rad_ccc); data[0] = rad_ccc; data[1] = (rad_bbb >> 0) & 0xFF; data[2] = (rad_bbb >> 8) & 0xFF; data[3] = (rad_bbb >> 16) & 0xFF; data[4] = (rad_bbb >> 24) & 0xFF; }