Commit 9cc199a3 authored by 薛晓虎's avatar 薛晓虎

feat:添加一线通功能

parent 574f6c86
...@@ -55,5 +55,9 @@ ...@@ -55,5 +55,9 @@
"C_Cpp_Runner.useLeakSanitizer": false, "C_Cpp_Runner.useLeakSanitizer": false,
"C_Cpp_Runner.showCompilationTime": false, "C_Cpp_Runner.showCompilationTime": false,
"C_Cpp_Runner.useLinkTimeOptimization": false, "C_Cpp_Runner.useLinkTimeOptimization": false,
"C_Cpp_Runner.msvcSecureNoWarnings": false "C_Cpp_Runner.msvcSecureNoWarnings": false,
"files.associations": {
"api_rs485.h": "c",
"tyw_stdint.h": "c"
}
} }
\ No newline at end of file
...@@ -61,3 +61,6 @@ Check_Ctrl.c ...@@ -61,3 +61,6 @@ Check_Ctrl.c
key.c key.c
Key_user.c Key_user.c
Key.h Key.h
app_lsdn.c
app_lsdn.h
\ No newline at end of file
...@@ -9,6 +9,8 @@ ...@@ -9,6 +9,8 @@
#include "COM_CAN.h" #include "COM_CAN.h"
#include "GenDelay.h" #include "GenDelay.h"
#include "TFT_LCD.h" #include "TFT_LCD.h"
#include "app_lsdn.h"
uint32_t NO_IPK_EXIST_Status; uint32_t NO_IPK_EXIST_Status;
uint32_t NO_IPK_EXIST; uint32_t NO_IPK_EXIST;
//uint32_t NO_IPK_EXIST_Back; //uint32_t NO_IPK_EXIST_Back;
...@@ -241,6 +243,7 @@ uint8_t yibiaoshuju[34]; ...@@ -241,6 +243,7 @@ uint8_t yibiaoshuju[34];
memcpy(erweima,barcode_Msg,34); memcpy(erweima,barcode_Msg,34);
erweima[34] = 0xFF; erweima[34] = 0xFF;
General_Number_Disp(erweima, 3, 90); General_Number_Disp(erweima, 3, 90);
break; break;
case 1: case 1:
...@@ -592,6 +595,9 @@ void Function_Check_Ctrl(uint32_t cmd) ...@@ -592,6 +595,9 @@ void Function_Check_Ctrl(uint32_t cmd)
RELAY_VBAT_MCU = 1; RELAY_VBAT_MCU = 1;
RELAY_DC12V_MCU = 1; RELAY_DC12V_MCU = 1;
RELAY_KEY_MCU = 1; RELAY_KEY_MCU = 1;
Aima_SLF(1u, 0x03, 0x1, 1u);
break; break;
} }
...@@ -602,6 +608,7 @@ void Function_Check_Ctrl(uint32_t cmd) ...@@ -602,6 +608,7 @@ void Function_Check_Ctrl(uint32_t cmd)
RELAY_KEY_MCU = 0; RELAY_KEY_MCU = 0;
// ABC_OUT = 1; // ABC_OUT = 1;
left_turn = 0; left_turn = 0;
break; break;
} }
case 2: case 2:
...@@ -651,6 +658,7 @@ void Function_Check_Ctrl(uint32_t cmd) ...@@ -651,6 +658,7 @@ void Function_Check_Ctrl(uint32_t cmd)
FULL_BEAM = 1; FULL_BEAM = 1;
ZXSW_12V = 0; ZXSW_12V = 0;
left_turn = 0; left_turn = 0;
break; break;
} }
......
...@@ -478,133 +478,14 @@ void Sys_Run_Mode_100ms_Tasks_Group(void) ...@@ -478,133 +478,14 @@ void Sys_Run_Mode_100ms_Tasks_Group(void)
/*============================================================================== /*==============================================================================
��ȷ��50us��ʱ���� ��ֹ�����޸��б��е����� ��ȷ��50us��ʱ���� ��ֹ�����޸��б��е�����
------------------------------------------------------------------------------*/ ------------------------------------------------------------------------------*/
uint8_t flag_sync;
uint8_t flag_1;
uint8_t flag_0;
uint8_t flag_fin;
void Sys_Exact_50us_Tasks(void) void Sys_Exact_50us_Tasks(void)
{ {
static uint8_t flag1_count = 0;
static uint8_t flag1_flag = 0;
static uint8_t flag0_count = 0;
static uint8_t flag0_flag = 0;
static uint16_t flag_fin_count = 0;
static uint8_t sync_flag = 0;
static uint16_t sync_count = 0;
if(flag_sync == 1)
{
if(sync_count < 220)
{
sync_count++;
}
else
{
sync_count = 0;
flag_sync = 0;
}
if(sync_count < 200)
{
TX_OUT = 1;
}
else if (sync_count < 20)
{
TX_OUT = 0;
}
return;
}
if(flag_1 == 1)
{
if(flag1_count < 40)
{
flag1_count++;
}
else
{
flag1_count = 0;
flag_1 = 0;
}
if(flag1_count < 30)
{
TX_OUT = 1;
}
else if (flag1_count < 40)
{
TX_OUT = 0;
}
}
if(flag_0 == 1)
{
if(flag0_count < 40)
{
flag0_count++;
}
else
{
flag0_count = 0;
flag_0 = 0;
}
if(flag0_count < 10)
{
TX_OUT = 1;
}
else if (flag0_count < 40)
{
TX_OUT = 0;
}
}
if(flag_fin == 1)
{
if(flag_fin_count < 100)
{
flag_fin_count++;
}
else
{
flag_fin_count = 0;
flag_fin = 0;
}
if(flag_fin_count < 10)
{
TX_OUT = 1;
}
else if (flag_fin_count < 40)
{
TX_OUT = 0;
}
}
GenDelay_Tick( ); GenDelay_Tick( );
DoCAN_Timer_Update(50u); DoCAN_Timer_Update(50u);
} }
// 发送单个比特(逻辑"1"或"0")
void send_bit(uint8_t bit) {
if (bit) {
flag_1 = 1;
} else {
flag_0 = 1;
}
}
// 发送完整数据(按字节发送,高位优先)
void send_data(const uint8_t *data, uint32_t len) {
flag_sync == 1; // 发送同步信号
for (uint32_t i = 0; i < len; i++) {
uint8_t byte = data[i];
for (int j = 7; j >= 0; j--) { // 高位先发
send_bit((byte >> j) & 0x01);
}
}
flag_fin == 1; // 发送停止信号
}
/*============================================================================*/ /*============================================================================*/
......
...@@ -445,9 +445,9 @@ void R485_Timer_Handel(void) ...@@ -445,9 +445,9 @@ void R485_Timer_Handel(void)
// else // else
// { // {
// set_pin_high(); // set_pin_high();
// delay_ms(0.5); // 高电平0.5ms (逻辑"0"的T8) // lsdn_delay_us(0.5); // 高电平0.5ms (逻辑"0"的T8)
// set_pin_low(); // set_pin_low();
// delay_ms(1.5); // 低电平1.5ms (逻辑"0"的T7) // lsdn_delay_us(1.5); // 低电平1.5ms (逻辑"0"的T7)
// } // }
// } // }
......
#include "app_lsdn.h"
#include "RTE_GPIO.h"
#include "GenDelay.h"
// 假设的GPIO操作函数
void set_pin_high(uint8_t mode)
{
// GPIO_DIR_PORT00_PIN08 = 0;
// TX_OUT = 0;
if(mode == 0)
{
TX_OUT = 0;
}
else
{
ONE_START = 0;
}
}
void set_pin_low(uint8_t mode)
{
// GPIO_DIR_PORT00_PIN08 = 0;
// TX_OUT = 1;
if(mode == 0)
{
TX_OUT = 1;
}
else
{
ONE_START = 1;
}
}
void lsdn_delay_us(uint32_t us)
{
Gen_TimeDelay(us, 50u);
}
// 发送同步信号
void send_sync(uint8_t mode) {
set_pin_low(mode);
lsdn_delay_us(10000); // 高电平1ms (T2)
set_pin_high(mode);
lsdn_delay_us(1000); // 低电平10ms (T1≥10ms)
}
// 发送单个比特(逻辑"1"或"0")
void send_bit(uint8_t mode, uint8_t bit) {
if (bit) {
set_pin_low(mode);
lsdn_delay_us(500); // 低电平0.5ms (逻辑"1"的T5)
set_pin_high(mode);
lsdn_delay_us(1500); // 高电平1.5ms (逻辑"1"的T6)
} else {
set_pin_low(mode);
lsdn_delay_us(1500); // 低电平1.5ms (逻辑"0"的T7)
set_pin_high(mode);
lsdn_delay_us(500); // 高电平0.5ms (逻辑"0"的T8)
}
}
// 发送停止信号
void send_stop(uint8_t mode) {
set_pin_low(mode);
lsdn_delay_us(5000); // 低电平50ms (N>50,取最小值50ms)
set_pin_high(mode);
lsdn_delay_us(50000); // 高电平5ms (T9)
}
// 发送完整数据(按字节发送,高位优先)
void lsdn_send_data(uint8_t mode, const uint8_t *data, uint32_t len) {
send_sync(mode); // 发送同步信号
for (uint32_t i = 0; i < len; i++) {
uint8_t byte = data[i];
for (int j = 0; j < 8; j++) { // 高位先发
send_bit(mode, (byte >> j) & 0x01);
}
}
send_stop(mode); // 发送停止信号
}
uint8_t c_YXT_sum(uint8_t *buf,uint8_t len)
{
uint8_t i=0;
uint16_t ret = 0;
for(i=0;i<len;i++)
{
ret += buf[i];
}
return ret;
}
uint8_t Aima_SLF_DataBuf[50];
uint8_t flag1 = 0;
// mode = 0,485接口;mode=1,一键启动接口
void Aima_SLF(uint8_t mode, uint8_t cmd, uint8_t data, uint8_t data_len)
{
// if(flag1 == onoff)
// {
// return;
// }
Aima_SLF_DataBuf[0] = 0x55;
Aima_SLF_DataBuf[1] = 0xaa;
Aima_SLF_DataBuf[2] = cmd;
Aima_SLF_DataBuf[3] = data;
Aima_SLF_DataBuf[4] = c_YXT_sum(Aima_SLF_DataBuf, data_len + 3);
lsdn_send_data(mode, Aima_SLF_DataBuf, data_len + 4);
// flag1 = onoff;
}
#ifndef _APP_LSDN_
#define _APP_LSDN_
#include "TYW_stdint.h"
void Aima_SLF(uint8_t mode, uint8_t cmd, uint8_t data, uint8_t data_len);
#endif
\ No newline at end of file
...@@ -69,9 +69,16 @@ void Sys_Startup_Init(void) ...@@ -69,9 +69,16 @@ void Sys_Startup_Init(void)
{ {
RTC_Pre_Init( ); //首次上电 RTC_Pre_Init( ); //首次上电
WDT_Init( ); WDT_Init( );
GenDelay_Init(WDT__Clear);
Sys_Tick_Timer_Call_Back_Reg(Sys_Process_ISR); Sys_Tick_Timer_Call_Back_Reg(Sys_Process_ISR);
RTE_GPIO_Init( ); RTE_GPIO_Init( );
// GPIO_DIR_PORT00_PIN08 = 1;
// TX_OUT = 0;
ONE_START = 0;
GPIO_SET_KEPP( ); GPIO_SET_KEPP( );
RTE_ADC_Init( ); RTE_ADC_Init( );
// COM_CAN_Init( ); // COM_CAN_Init( );
......
...@@ -13,6 +13,8 @@ int main(void) ...@@ -13,6 +13,8 @@ int main(void)
Sys_Task_Init(); Sys_Task_Init();
Sys_Startup_Init(); Sys_Startup_Init();
while (1U) while (1U)
{ {
Sys_Scheduling_Service(); Sys_Scheduling_Service();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment