不含stm32 底层的代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
MyStm32Code/device/Src/base.c

434 lines
13 KiB

2 years ago
#include "base.h"
// #define USE_USB_HS
extern osSemaphoreId_t elog_dma_lockHandle;
int _write(int fd, char *ch, int len)
{
// HAL_UART_Transmit(&huart1, (uint8_t *)ch, len, 0xFFFF);
if (osOK == osSemaphoreAcquire(elog_dma_lockHandle, osWaitForever))
{
HAL_UART_Transmit_DMA(&huart2, (uint8_t *)ch, len);
}
return len;
}
extern struct led led_0;
// extern struct led led_1;
// extern osTimerId_t myTimer01Handle;
// uint8_t send_buf[8] = {0x01,0x03,0x00,0x00,0x00,0x04,0x44,0x09};
uint8_t send_buf[24] = {0x01,0x03,0x00,0x00,0x00,0x04,0x44,0x09,0x01,0x03,0x00,0x00,0x00,0x04,0x44,0x09,0x01,0x03,0x00,0x00,0x00,0x04,0x44,0x09};
// uint8_t rcv_buf[14] = {0};
// uint8_t rcv_buf_2[13] = {0};
// uint8_t wk2xxx_rcvbuf[1024] ={ 0};
WK2114_Sub_Uart_TypeDef *sub_uart1 = NULL;
uint8_t sub_uart1_receive_buf[1024];
void MY_INIT( )
{
// max3243_enable( ); // 使能 3243 供电
// uart2_power_enable( );
// uart3_power_enable( );
// uart4_power_enable( );
// uart6_power_enable( );
// usart6_receive_enable();
}
void measureTimer_Callback(void *argument)
{
log_i("measure timer begin .... " );
led_set_state( &led_0, LED_STATE_FLICKER_QUICK );
int st ;
st = wk2114_sub_uart_send( wk2114->sub_uart[0], send_buf, sizeof(send_buf) );
log_e("send_buf ok addr %d .... st %d " ,send_buf, st);
// osEventFlagsSet(wk2114EventHandle,
// MODULE_WK2114_EVENT_EXTI_IT_SOURCE_SENDING);
// sc6.start();
// oscar.start();
// ph.start();
// // my_ads1115.start();
// memset((void* )result, 0 , 12);
}
void measureTask(void *argument)
{
int step =0;
for (;;)
{
osDelay(40);
}
}
static void Default_Task_Init()
{
// measuring_flag = 0;
uint64_t ticks = 0;
if ( 0 == Led_Port() ) {
log_i("Led Port int Ok .... ");
}
led_set_state( &led_0, LED_STATE_FLICKER_SLOW );
//WK2xxx 初始化
if(0==WK2114_Init())
{
log_d("wk2114 Init Ok...");
}else{
log_w("wk2114 Init Failure...");
}
// 启动任务, 多次重试baud
WK2114_Port();
// 状态机初始化
wk2114->state= WK2114_WORK_STATE_START;
while( wk2114->state!=WK2114_WORK_TEST_OK ) {osDelay(1);}
log_d("wk2114 test ok...");
wk2114->state= WK2114_WORK_STATE_ADD_SUB_UART;
while( wk2114->state!=WK2114_WORK_STATE_OK ) {osDelay(1);}
log_d("wk2114 init subuart ok...");
// HAL_Delay(2000);
// wk2114_mainport_rcv( wk2114);
// osEventFlagsSet(wk2114EventHandle,
// MODULE_WK2114_EVENT_EXTI_IT_SOURCE_SENDING);
// int st;
// // memset(rcvbuf, 0, 1024);
// // __HAL_UART_ENABLE_IT(pWK2114Uart, UART_IT_IDLE);
// // st =HAL_UART_Receive_DMA(pWK2114Uart, rcvbuf, 1024);
// wk2114_read_global_reg( wk2114, 0x00);
// // osDelay(1);
// // // wk2114->cmd = (WK2114_CMD_READ_REG<<6)+WK2114_G_REG_GIFR;
// // HAL_UART_Transmit(pWK2114Uart, &wk2114->cmd, 1, 0xFFF);
// st = HAL_UART_Receive(pWK2114Uart, &wk2114->reg_readout, 1 , 0xFFF);
// log_i(" wk2114->reg_readout 0x%02X st %d ", wk2114->reg_readout,st);
// wk2114_inter_callback( wk2114);
// // 注册子串口,初始化
// sub_uart1 = (WK2114_Sub_Uart_TypeDef *)malloc(sizeof(WK2114_Sub_Uart_TypeDef));
// if (0!=wk2114_sub_uart_register(wk2114, sub_uart1,WK2114_S_UART_1,sub_uart1_receive_buf,1024, &huart2, Sub_rcv_callback))
// {
// log_e("sub-uart 1 register Failure ! ");
// };
// if (0!=wk2114_sub_uart_init( sub_uart1,115200,WK2114_SUB_UART_MODE_MASK_TX|WK2114_SUB_UART_MODE_MASK_RX,WK2114_SUB_UART_FIFO_MODE_MASK_TX|WK2114_SUB_UART_FIFO_MODE_MASK_RX,WK2114_UART_PARITY_NONE,WK2114_UART_STOP_BITS_1))
// {
// log_e("sub-uart 1 init Failure ! ");
// }
// log_w( " sub uart init ok .... " );
// log_w( " --->>>> count %d " , osMessageQueueGetCount(wk2114->cmd_queue) );
// memset(rcvbuf, 0, 1024);
// __HAL_UART_ENABLE_IT(pWK2114Uart, UART_IT_IDLE);
// HAL_UART_Receive_DMA(pWK2114Uart, rcvbuf, 1024);
// while (osMessageQueueGetCount(wk2114->cmd_queue) > 0)
// {
// wk2114_send(wk2114);
// }
// log_i("sub-uart 1 init success ! ");
// // 启动任务
// WK2114_Port();
// // 状态机初始化
// wk2114->state= WK2114_WORK_STATE_START;
// if ( 0 == ds1302_port() )
// {
// log_i("ds1302 init Ok .... ");
// }
// ph.init();
// ph.port();
// ph.test();
// viper.init();
// viper.port();
// viper.test();
// oscar.init();
// oscar.port();
// oscar.test();
// sc6.init();
// sc6.port();
// sc6.test();
// ramses.init();
// ramses.port();
// ramses.test();
// wh_lte.init();
// wh_lte.port();
// wh_lte.start();
// wk2114.init();
// wh_lte.port();
// wh_lte.start();
// ticks = osKernelGetTickCount();
// while ( viper.state!=Viper_State_Ready )
// {
// if ( ( osKernelGetTickCount() -ticks) > 3000 )
// {
// log_e(" VIPER_ state error.... ") ;
// break;
// }
// osDelay(10);
// }
// log_d(" VIPER_ state OK.... ") ;
// Modbus_Port( );
RTOS_Port( );
extern osTimerId_t measureTimerHandle;
osTimerStart( measureTimerHandle, 5000 );
}
void StartDefaultTask(void *argument)
{
HAL_GPIO_WritePin( LED0_GPIO_Port,LED0_Pin,RESET);
// max3243_enable( );
Init_Logger();
log_i(" ****** System is initiating ****** ");
Default_Task_Init();
for (;;)
{
// log_i("looo... ");
osDelay(1000 );
// log_i(" aa bb cc dd : %d %d %d %d ",aa, bb, cc, dd );
}
}
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_pin)
{
// log_i( " irq ..... %d ",osKernelGetTickCount() );
}
// void EXTI9_5_IRQHandler(void)
// {
// log_i( " irq ..... %d ",osKernelGetTickCount() );
// // if( (osEventFlagsGet(wk2114EventHandle) & MODULE_WK2114_EVENT_EXTI_IT_SOURCE_SENDING) !=0){
// // return;
// // }
// // osEventFlagsSet(wk2114EventHandle, MODULE_WK2114_EVENT_EXTI_IT_SOURCE_SENDING);
// // log_i( " exti ..... %d ",osKernelGetTickCount() );
// // HAL_GPIO_EXTI_IRQHandler(WK2114_INT_Pin);
// // if(__HAL_GPIO_EXTI_GET_IT(WK2XXX_INT_GPIO_PIN) != RESET)
// // {
// // // 在中断处理函数中对GT911的寄存器0X814E写0
// // log_i("WK2XXX_INT_IRQHandler ......");
// // // GTP_TouchProcess();
// // // INT_Callback();
// // __HAL_GPIO_EXTI_CLEAR_IT(WK2XXX_INT_GPIO_PIN);
// // }
// }
void Soft_Reboot()
{
__set_FAULTMASK(1);//关闭总中断
NVIC_SystemReset();//请求单片机重启
}
/*
// printf("test.... \r\n");
// printf ( "max3243 ... %d \r\n", HAL_GPIO_ReadPin( MAX3242_EN_GPIO_Port,MAX3242_EN_Pin));
// HAL_UART_Transmit(&huart1, pH_send_buf, 8,1000);
// HAL_UART_Transmit(&huart2, pH_send_buf, 8,1000);
// HAL_UART_Transmit(&huart4, pH_send_buf, 8,1000);
// usart6_send_enable();
// HAL_UART_Transmit(&huart6, pH_send_buf, 8,1000);
log_i("test uart2 .... ");
HAL_GPIO_WritePin(UART_EN_GPIO_Port,UART_EN_Pin, SET);
HAL_UART_Transmit(&huart2, (uint8_t*)"usart2\r\n", 8,0xFF);
HAL_UART_Transmit_IT(&huart4, send_buf, 8 );
// while ( __HAL_UART_GET_FLAG(&huart4, UART_FLAG_TC) == RESET);
// HAL_UART_Receive_IT(&huart4, rcv_buf_2, 13 );
// HAL_GPIO_WritePin(UART_EN_GPIO_Port,UART_EN_Pin,RESET);
log_i("test uart6 485.... ");
HAL_GPIO_WritePin(R_W_GPIO_Port,R_W_Pin, SET);
// HAL_UART_Transmit(&huart6, (uint8_t*)"uart66\r\n", 8,0xFF);
HAL_UART_Transmit_IT(&huart6, send_buf, 8 );
while ( __HAL_UART_GET_FLAG(&huart6, UART_FLAG_TC) == RESET);
HAL_GPIO_WritePin(R_W_GPIO_Port,R_W_Pin,RESET);
HAL_UART_Receive_IT(&huart6, rcv_buf, 13 );
// log_i("test uart3 3160 232.... ");
// HAL_GPIO_WritePin(SEL_232_485_GPIO_Port,SEL_232_485_Pin, RESET);
// HAL_GPIO_WritePin(HDPLX_GPIO_Port,HDPLX_Pin, RESET);
// // HAL_UART_Transmit(&huart3, (uint8_t*)"uart3160\r\n", 10,0xFF);
// // HAL_UART_Transmit(&huart3, send_buf, 8,0xFF);
// HAL_UART_Receive_IT(&huart3, rcv_buf_2, 13 );
// HAL_UART_Transmit_IT(&huart3, send_buf, 8 );
// while ( __HAL_UART_GET_FLAG(&huart3, UART_FLAG_TC) == RESET);
// log_i("test uart3 3160 485.... ");
// HAL_GPIO_WritePin(SEL_232_485_GPIO_Port,SEL_232_485_Pin, SET);
// HAL_GPIO_WritePin(DE485_GPIO_Port, DE485_Pin, RESET);
// HAL_GPIO_WritePin(HDPLX_GPIO_Port,HDPLX_Pin, SET);
// // HAL_UART_Transmit(&huart3, (uint8_t*)"uart3160\r\n", 10,0xFF);
// // HAL_UART_Transmit(&huart3, send_buf, 8,0xFF);
// // HAL_UART_Receive_IT(&huart3, rcv_buf_2, 13 );
// HAL_UART_Transmit_IT(&huart3, send_buf, 8 );
// while ( __HAL_UART_GET_FLAG(&huart3, UART_FLAG_TC) == RESET);
// HAL_GPIO_WritePin(DE485_GPIO_Port, DE485_Pin, SET);
// HAL_GPIO_WritePin(HDPLX_GPIO_Port,HDPLX_Pin, RESET);
// // HAL_UART_Receive_IT (&huart3, rcv_buf_2,2 );
// if ( HAL_UART_Receive (&huart3, rcv_buf_2, 2 ,2000) ==HAL_OK)
// {
// log_i("rcv ok");
// }
// log_i( "rcvbuf : %d %d %d", rcv_buf_2[0], rcv_buf_2[1], rcv_buf_2[2]);
// HAL_GPIO_WritePin(DE485_GPIO_Port, DE485_Pin, SET);
// HAL_GPIO_WritePin(HDPLX_GPIO_Port,HDPLX_Pin, RESET);
*/
// void measureTimer_Callback(void *argument)
// {
// log_i("measure timer begin .... " );
// // led_set_state( &led_0, LED_STATE_FLICKER_QUICK );
// // voltage = 0.0;
// // H2S = 0.0;
// // memset(pH_rcv_buf, 0, 9 );
// // memset(result, 0, 12 );
// // timebase = osKernelGetTickCount();
// // measuring_flag = 1;
// // pH_send_flag = 0;
// // pH_rcv_flag = 0;
// // pH_measuring_flag = 0;
// // pH_measure_ok = 0;
// // voltage_measure_ok = 0;
// // measure_step = 0;
// }
// void pH_Task(void *argument)
// {
// max3160_485_receive_mode();
// for(;;)
// {
// // if ( pH_measure_ok ==0 && pH_send_flag == 0)
// // {
// // log_i(" send stage ... ");
// // HAL_UART_Receive_DMA(&huart3, pH_rcv_buf, 9 );
// // timebase = osKernelGetTickCount();
// // max3160_485_send_mode();
// // pH_send_flag = 1;
// // HAL_UART_Transmit_DMA(&huart3, pH_send_buf, 8 );
// // }
// // if ( pH_measure_ok ==0 && pH_send_flag == 1 && pH_rcv_flag == 0 )
// // {
// // uint64_t time_ticks = osKernelGetTickCount() ;
// // // log_i( " time_ticks :%d " , time_ticks);
// // if ( (time_ticks - timebase ) >400)
// // {
// // log_i( " pH timeout ..... " );
// // measureTimer_Callback(NULL);
// // }
// // }
// // if ( pH_measure_ok ==0 && pH_rcv_flag == 1 )
// // {
// // log_i( " pH ok ..... " );
// // pH_measure_ok = 1;
// // }
// // if ( pH_measure_ok ==1 )
// // {
// // ;
// // }
// osDelay(50);
// }
// }
// void Measure_Task(void *argument)
// {
// for (;;)
// {
// // /* convert */
// // if ( measure_step==0 && pH_measure_ok == 1 && voltage_measure_ok == 1 )
// // {
// // /** TODO ...*/
// // result[1] = (pH_rcv_buf[5]*256 + pH_rcv_buf[6])/10.0; /* Temp /10.0*/
// // result[2] = (pH_rcv_buf[3]*256 + pH_rcv_buf[4])/100.0; /* pH /10.0*/
// // // log_i( " temperature :%.6f pH : %.6f " , temperature ,pH_value);
// // get_h2s_2(&H2S_concentration , voltage, result[1]);
// // result[0] = H2S_concentration;
// // led_set_state(&led_0, LED_STATE_FLICKER_SLOW);
// // // log_i( "H2S : %.6f " ,H2S);
// // measure_step++;
// // }
// // /* 写modbus数据 */
// // if ( measure_step==1 )
// // {
// // /* 写modbus 临界区 */
// // log_i( "-------> H2S: %.6f TEMP: %.6f pH: %.6f ", result[0] , result[1], result[2]);
// // // 数据全反过来 40db851f41a80000402771f2 -》 f2712740......//
// // Modbus_Set_HoldingBuff( (uint8_t *)result, 12, 0);
// // measure_step++;
// // /*pH 686 : 40db851f 41a80000 402771f2 */
// // }
// // /* 输出数据 uart1 */
// // if ( measure_step==2 )
// // {
// // log_i( "send to screen... " );
// // int ret= HAL_UART_Transmit_IT(&huart1, (uint8_t *)result, 12);
// // if( ret==HAL_OK)
// // log_i( "send ok.. " );
// // measure_step++;
// // }
// // if ( measure_step==3 )
// // {
// // osDelay(2);
// // }
// osDelay(20);
// }
// }
// if ( 0 == ads1115_test(hi2c1) )
// {
// log_i("ads1115 test Ok .... ");
// }else{
// log_i("ads1115 test failure .... ");
// }