/* * Record.c * * Created on: 2014-5-26 * Author: zdl */ #include "includes.h" char *const Display_Name[]={ "Music List", "1-Beyond.wav", "2-LetItG.wav", "3-WeAreO.wav", "4-FanFan.wav", "5-OldBoy.wav", "6-Sodagr.wav", "7-WangF1.wav", "8-WangF2.wav", "9-Mayday.wav", "10-StevC.wav", }; void Music_Graph() { SysTickDisable(); //---------Draw Title---------- ui8Flush_Flag=FLUSH_ON; GrClearDisplay(&g_sContext); GrFlush(&g_sContext); } void Music_Begin() { DSTATUS i=1; SystemClock=SysCtlClockGet(); //----------------硬件初始化--------------- DAC_Init(); //初始化DAC //-------------------初始化SD卡-------------------- while(i==1)// 使用文件系统初始化SD卡 i=disk_initialize(0); //-------------------初始化Timer------------------- SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER1); TimerDisable(TIMER1_BASE, TIMER_A); TimerConfigure(TIMER1_BASE, TIMER_CFG_A_PERIODIC_UP); TimerIntRegister(TIMER1_BASE,TIMER_A,Timer1IntHandler); TimerIntEnable(TIMER1_BASE, TIMER_TIMA_TIMEOUT); MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); MAP_GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, GPIO_PIN_6); MAP_GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_6,GPIO_PIN_6); SysTickEnable(); } void Music_Main() { static uint8_t preDisplay_Num=255,Display_Num=0; while((ui8ButtonKeyValue&KEY_LEFT_ENTER) == 0 &&(ui8ButtonKeyValue&KEY_RIGHT_EXIT)==0) { Display_Num = GetWheelKey(); _nop(); if(Display_Num != preDisplay_Num) { DrawMenu(Display_Num,Display_Name); preDisplay_Num = Display_Num; } SysCtlDelay(SystemClock/100); } if(Music_Enter==1) { GrClearDisplay(&g_sContext); GrStringDrawCentered(&g_sContext, Display_Name[Display_Num], AUTO_STRING_LENGTH, 63, 20, OPAQUE_TEXT); GrContextFontSet(&g_sContext, &g_sFontFixed6x8); GrStringDraw(&g_sContext,"Time:",4,0,53,1); GrStringNumberCentered(&g_sContext,0,0,35+22,57); GrStringDraw(&g_sContext,"-",1,35+9,53,1); GrStringNumberCentered(&g_sContext,0,0,35+2,57); GrStringDraw(&g_sContext,"/",1,35+34,53,1); GrStringNumberCentered(&g_sContext,0,0,35+48,57); GrStringDraw(&g_sContext,"-",1,35+55,53,1); GrStringNumberCentered(&g_sContext,0,0,35+70,57); GrFlush(&g_sContext); ui8Flush_Flag=FLUSH_OFF; WaveOpen(Display_Name[Display_Num],MONO); ui8Flush_Flag=FLUSH_ON; preDisplay_Num=255; ui8ButtonKeyValue&=~(KEY_LEFT_ENTER+KEY_RIGHT_EXIT); } else { preDisplay_Num=255; rcd_ply_sel = 255; } } void Music_Quit() { MAP_GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5,0); TimerDisable(TIMER1_BASE, TIMER_A); ui8Flush_Flag=FLUSH_ON; }
时间: 2024-04-10 18:31:43 浏览: 17
这是一个用于音乐播放的记录程序。程序中包含了一些函数,如Music_Graph用于绘制音乐界面,Music_Begin用于初始化硬件和SD卡,Music_Main用于处理音乐播放的主要逻辑,Music_Quit用于停止音乐播放。
其中,Display_Name是一个字符串数组,存储了音乐列表的名称。Music_Main函数中通过GetWheelKey函数获取当前选择的音乐编号,并根据该编号在屏幕上显示相应的音乐名称。当按下ENTER键时,进入音乐播放界面,并根据选择的音乐名称打开相应的音乐文件进行播放。
需要注意的是,程序中使用了一些外部库函数和硬件相关的代码,比如DAC_Init用于初始化DAC芯片,disk_initialize用于初始化SD卡,Timer1IntHandler是一个定时器中断处理函数等。这些函数的具体实现可能需要查看其他文件或库文件中的代码。
相关问题
include_directories(${SNPE_DIR}/include/zdl)中的include_directories是啥
`include_directories` 是 CMake 中的一个命令,用于向编译器添加头文件搜索路径。在这个例子中,`${SNPE_DIR}/include/zdl` 是一个头文件目录的路径,通过 `include_directories` 命令将这个路径添加到编译器的头文件搜索路径中,以便编译器能够找到这个目录下的头文件。
SNPE yolov5
根据提供的引用内容,SNPE是指Snapdragon Neural Processing Engine,是高通公司推出的一款深度学习推理引擎。而yolov5是一种目标检测算法,它可以用于检测图像或视频中的物体。下面是将yolov5模型转换为SNPE Enabled App的步骤:
1. 首先,需要将yolov5模型转换为SNPE所需的DLC文件。可以使用SNPE提供的Model Convert工具来完成此操作。具体步骤如下:
```shell
snpe-tensorflow-to-dlc --input_network yolov5s.onnx --output_network yolov5s.dlc --allow_unconsumed_nodes
```
这里假设yolov5模型已经转换为了ONNX格式。
2. 如果需要在Hexagon DSP上运行模型,则可以使用SNPE提供的ModelQuantize工具来量化模型。具体步骤如下:
```shell
snpe-dlc-quantize --input_network yolov5s.dlc --output_network yolov5s_quantized.dlc --input_dims input:1,3,640,640 --calib_iter 50
```
这里假设输入张量的名称为input,大小为1x3x640x640,量化迭代次数为50。
3. 接下来,可以使用SNPE Task API来加载模型并完成推理。具体步骤如下:
```c++
// 加载模型
std::unique_ptr<zdl::DlSystem::ITensor> input = zdl::SNPE::SNPEFactory::getInput(mSNPE, "input");
std::unique_ptr<zdl::DlSystem::ITensor> output = zdl::SNPE::SNPEFactory::getOutput(mSNPE, "output");
// 处理输入
// ...
// 完成推理
mSNPE->execute(inputTensors, outputTensors);
// 处理输出
// ...
```
这里假设输入张量的名称为input,输出张量的名称为output。
4. 最后,可以使用YOLOv5s来进行预处理和后处理。具体步骤如下:
```python
# 预处理
img = cv2.imread('image.jpg')
img = cv2.resize(img, (640, 640))
img = img.transpose((2, 0, 1))
img = np.expand_dims(img, axis=0)
# 推理
output = snpe.infer({'input': img})
# 后处理
# ...
```
这里假设输入张量的名称为input,大小为1x3x640x640。