仍然使用信号量,不使用互斥量

This commit is contained in:
起床就犯困 2025-10-20 19:35:24 +08:00
parent 4b086aae75
commit 42f0144389
6 changed files with 30 additions and 16 deletions

View File

@ -136,8 +136,10 @@ void ptz_hori_stop(unsigned short int time)
{ {
OSTimeDlyHMSM(0u, 0u, 0u, time); OSTimeDlyHMSM(0u, 0u, 0u, time);
ptz_hori_stop_count = 0; ptz_hori_stop_count = 0;
// servoSendData(horiMotorType, WriteMotorOneReg(H_MOTOR, H03_DI1_LOGICAL_SELEC, 0)
// , WRITE_ONE_REG_FRAME_NUM, highPriority); //失能电机
servoSendData(horiMotorType, WriteMotorOneReg(H_MOTOR, H03_DI1_LOGICAL_SELEC, 0) servoSendData(horiMotorType, WriteMotorOneReg(H_MOTOR, H03_DI1_LOGICAL_SELEC, 0)
, WRITE_ONE_REG_FRAME_NUM, highPriority); //失能电机 , WRITE_ONE_REG_FRAME_NUM, lowPriority); //失能电机
} }
ptz_hori_stop_count ++; ptz_hori_stop_count ++;
//电子稳定 //电子稳定

View File

@ -258,6 +258,7 @@ static void ptz_recv_hori_servo_task()
stopTimeOut(H_MOTOR); stopTimeOut(H_MOTOR);
//释放信号量,通知能发送一次 //释放信号量,通知能发送一次
OSSemPost(g_horiSpeedMutex); OSSemPost(g_horiSpeedMutex);
// OSMutexPost(g_horiSpeedMutex);
} }
} }
@ -278,6 +279,7 @@ static void ptz_recv_vert_servo_task()
} }
stopTimeOut(V_MOTOR); stopTimeOut(V_MOTOR);
//释放信号量,通知能发送一次 //释放信号量,通知能发送一次
// OSMutexPost(g_vertSpeedMutex);
OSSemPost(g_vertSpeedMutex); OSSemPost(g_vertSpeedMutex);
} }
} }
@ -332,10 +334,10 @@ static void creat_task_servo_recv_task(void)
void Init_ServoMotorRecv(void) void Init_ServoMotorRecv(void)
{ {
CPU_INT08U err; CPU_INT08U err;
g_horiMotorMutex = OSSemCreate(1); g_horiMotorMutex = OSSemCreate(0);
g_vertMotorMutex = OSSemCreate(1); g_vertMotorMutex = OSSemCreate(0);
OSSemPend(g_horiMotorMutex, 1, &err); // OSSemPend(g_horiMotorMutex, 1, &err);
OSSemPend(g_vertMotorMutex, 1, &err); // OSSemPend(g_vertMotorMutex, 1, &err);
creat_task_servo_recv_task(); creat_task_servo_recv_task();
} }

View File

@ -284,6 +284,7 @@ static void ptz_hori_servo_task()
// if(g_ptz.hori_start_stop_set == PTZ_HORI_STOP) // if(g_ptz.hori_start_stop_set == PTZ_HORI_STOP)
// { // {
// } // }
// OSMutexPend(g_horiSpeedMutex, 0, &err);
OSSemPend(g_horiSpeedMutex, 0, &err); OSSemPend(g_horiSpeedMutex, 0, &err);
OSSemPend(g_horiSpeedSem, 0, &err); OSSemPend(g_horiSpeedSem, 0, &err);
@ -406,12 +407,14 @@ static void creat_task_vert_servo_task(void)
void horiServoTimeOut() void horiServoTimeOut()
{ {
servoLinkListMemPut(horiMotorType); servoLinkListMemPut(horiMotorType);
// OSMutexPost(g_horiSpeedMutex);
OSSemPost(g_horiSpeedMutex); OSSemPost(g_horiSpeedMutex);
} }
void vertServoTimeOut() void vertServoTimeOut()
{ {
servoLinkListMemPut(vertMotorType); servoLinkListMemPut(vertMotorType);
// OSMutexPost(g_vertSpeedMutex);
OSSemPost(g_vertSpeedMutex); OSSemPost(g_vertSpeedMutex);
} }
@ -503,15 +506,18 @@ void startTimeOut(uint8_t motorType)
void init_speed_module(void) void init_speed_module(void)
{ {
CPU_INT08U err;
g_horiSpeedSem = OSSemCreate(0); g_horiSpeedSem = OSSemCreate(0);
g_vertSpeedSem = OSSemCreate(0); g_vertSpeedSem = OSSemCreate(0);
// g_horiSpeedMutex = OSMutexCreate(TASK_HORI_PID_PRIO, &err);
// g_vertSpeedMutex = OSMutexCreate(22, &err);
g_horiSpeedMutex = OSSemCreate(1); g_horiSpeedMutex = OSSemCreate(1);
g_vertSpeedMutex = OSSemCreate(1); g_vertSpeedMutex = OSSemCreate(1);
OSSemPost(g_horiSpeedMutex); // OSSemPost(g_horiSpeedMutex);
OSSemPost(g_vertSpeedMutex); // OSSemPost(g_vertSpeedMutex);
CPU_INT08U err;
g_memPtr = OSMemCreate(memBuffer, sendDataBufNumber * 2, linkListNodeLen, &err); g_memPtr = OSMemCreate(memBuffer, sendDataBufNumber * 2, linkListNodeLen, &err);
if (err != OS_ERR_NONE) { if (err != OS_ERR_NONE) {
pdebug(DEBUG_LEVEL_FATAL, "Failed to create the motor memory pool\n\r"); pdebug(DEBUG_LEVEL_FATAL, "Failed to create the motor memory pool\n\r");

View File

@ -30,8 +30,8 @@
* @param data * @param data
* @return * @return
*/ */
static uint8_t g_HwriteOneRegBuff[WRITE_ONE_REG_FRAME_NUM]; uint8_t g_HwriteOneRegBuff[WRITE_ONE_REG_FRAME_NUM];
static uint8_t g_VwriteOneRegBuff[WRITE_ONE_REG_FRAME_NUM]; uint8_t g_VwriteOneRegBuff[WRITE_ONE_REG_FRAME_NUM];
uint8_t* WriteMotorOneReg(uint8_t motorNo, uint16_t regAddr, int16_t data) uint8_t* WriteMotorOneReg(uint8_t motorNo, uint16_t regAddr, int16_t data)
{ {
static uint8_t g_writeOneRegBuff[WRITE_ONE_REG_FRAME_NUM]; static uint8_t g_writeOneRegBuff[WRITE_ONE_REG_FRAME_NUM];

View File

@ -60,6 +60,10 @@ void NMI_Handler(void)
void HardFault_Handler(void) void HardFault_Handler(void)
{ {
term_printf("****************** HardFault_Handler ********************/\r\n\r\n"); term_printf("****************** HardFault_Handler ********************/\r\n\r\n");
beep_enable();
/* if Hard Fault exception occurs, go to infinite loop */ /* if Hard Fault exception occurs, go to infinite loop */
while(1){ while(1){
} }

View File

@ -826,7 +826,7 @@
</option> </option>
<option> <option>
<name>IlinkIcfFile</name> <name>IlinkIcfFile</name>
<state>D:\CompanyCode\newPro\servoMotor_xr\BSP\IAR\GD32F450xE.icf</state> <state>D:\psx\Pan-Tilt\1.software\HY\new_ptz\servoMotor\BSP\IAR\GD32F450xE.icf</state>
</option> </option>
<option> <option>
<name>IlinkIcfFileSlave</name> <name>IlinkIcfFileSlave</name>