1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- /*Includes ----------------------------------------------*/
- #include "tool.h"
- #include "bsp_time.h"
- #include "nrf_delay.h"
- #include "bll_imu.h"
- #include "hal_qma.h"
- #include "exception.h"
- #include "system.h"
- static uint8_t QmaSetFlag =0;//Qma配置成功标志位
- /*API --------------------------------------------------------------*/
- static void hal_qma_Porcess(void)
- {
- static uint8_t state=0;
- switch(state){
- case 0:
- if(0 == QmaSetFlag){
- drv_qma_power_off();
- state =1;
- }
- break;
- case 1:
- if(0 == drv_qma_power_on()){
- state =2;
- }
- else{
- Except_TxError(EXCEPT_QMA7981,"QMA7981 set fail");
- DEBUG_LOG("qma7981 config FAIL !\r\n");
- state =1;
- }
- break;
- case 2:
- if(0 == drv_qma_set_acc_odr(QMA_ACC_ODR_12HZ5)){
- QmaSetFlag =1;
- DEBUG_LOG("qma7981 config success !\r\n");
- Except_TxError(EXCEPT_QMA7981,"QMA7981 set ok");
- }else{
- DEBUG_LOG("qma7981 config FAIL !\r\n");
- Except_TxError(EXCEPT_QMA7981,"QMA7981 set fail");
- }
- state =0;
- break;
- default:state =0;break;
- }
- }
- uint8_t hal_qma_get_state(void){
- return QmaSetFlag;
- }
- int hal_qma_Init(void)
- {
- int ret = -1;
-
- ret = drv_qma_Init();
-
- nrf_delay_ms(20);
-
- ret += drv_qma_set_acc_odr(QMA_ACC_ODR_12HZ5);
- if(ret < 0)ret = drv_qma_set_acc_odr(QMA_ACC_ODR_12HZ5);//再配置一次
- Process_Start(1000,"qma_err",hal_qma_Porcess);
- if(ret == 0){
- QmaSetFlag =1;
- DEBUG_LOG("qma7981 config success !\r\n");
- }
- else{
- QmaSetFlag = 0;
- DEBUG_LOG("qma7981 config error:%d !\r\n",ret);
- }
- ret = ret < 0 ? -1 : 0;
-
- return ret;
- }
|