Files
test/app/app_ultrasonic.c
2025-11-07 09:52:24 +08:00

84 lines
1.9 KiB
C

#include "app_config.h"
#include "app_dependence.h"
#include "interface.h"
#include "app_frm_monitor.h"
#include "app_frm_signal.h"
#include "app_frm_timer.h"
#include "sdrv_vic.h"
#include "app_ultrasonic.h"
// 定时器结构体
Timer ultrasonic_timer;
Timer ultrasonic_timer1;
uint16_t fornt_distance = 0;//mm
// 定时器信号处理函数
void ultrasonicTimer1Process(void *signal_id)
{
(void)signal_id; // 标记变量为已使用,避免编译器警告
printf("fornt distance = %d\n",fornt_distance);
timerStart(&ultrasonic_timer1, 1000,1);
}
// 定时器信号处理函数
void ultrasonicTimerProcess(void *signal_id)
{
(void)signal_id; // 标记变量为已使用,避免编译器警告
un_ultrasonic_output1.bit_data.node = ULTRASONIC_FRONT_NODE;
un_ultrasonic_output1.bit_data.function_code = ULTRASONIC_READ;
un_ultrasonic_output1.bit_data.register_address = REALTIME_DISTANCE_REG;
un_ultrasonic_output1.bit_data.data = 0x100;
publishMessage(&un_ultrasonic_output1, 1);
timerStart(&ultrasonic_timer, 200,1);
}
void ultrasonicInput(void *signal_id)
{
if(signal_id == &un_ultrasonic_input1)
{
fornt_distance = SWAP_ENDIAN_16(un_ultrasonic_input1.bit_data.data);//高低字节交换
}
}
// APP模块的初始化
void ultrasonicAppInit(void)
{
// 初始化定时器
timerInit(&ultrasonic_timer);
timerInit(&ultrasonic_timer1);
// 订阅定时器信号
subscribe(&ultrasonic_timer, ultrasonicTimerProcess);
subscribe(&ultrasonic_timer1, ultrasonicTimer1Process);
subscribe(&un_ultrasonic_input1, ultrasonicInput);
printf("ultrasonicAPP: initial OK %d\n",getCurrentTime());
timerStart(&ultrasonic_timer, 200,1);
timerStart(&ultrasonic_timer1, 1000,1);
}