84 lines
1.8 KiB
C
84 lines
1.8 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);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|