为什么要演奏春日影

This commit is contained in:
TuxMonkey
2025-11-15 20:52:09 +08:00
parent 1a0484b332
commit 14a3cbb955
6 changed files with 211 additions and 133 deletions

View File

@@ -133,8 +133,11 @@ int main(void)
MX_TIM3_Init();
MX_SPI6_Init();
/* USER CODE BEGIN 2 */
systemstart_song();
robotSelfCheck(); //自检LED
systemstart_song(); //开机音乐
/*还没有启动调度器!不允许任何涉及到 Freertos ticks的内容在这里运行*/
/* USER CODE END 2 */
/* Init scheduler */

View File

@@ -31,136 +31,162 @@ uint8_t g = 0;
uint8_t b = 0;
/*---------------------FUNCTIONS---------------------*/
void robotSelfCheck(void)
{
WS2812_Ctrl(255, 0, 0);
HAL_Delay(300);
WS2812_Ctrl(0, 0, 255);
HAL_Delay(300);
WS2812_Ctrl(0, 255, 0);
HAL_Delay(300);
WS2812_Ctrl(0, 255, 0);
}
/**
* @brief WS2812 LED control task
* @param argument
*/
void ws2812Task(void *argument) {
(void) argument;
while (1) {
switch (RobotMode) {
case NORMAL_MODE:
BlinkGreen();
break;
case SYS_ERROR_OCCURRED:
BlinkRed();
break;
case REMOTE_NOT_CONNECTED:
BlinkYellow();
break;
case REMOTE_CONNECTED:
BlinkBlue();
break;
case AUTO_SHOOTING_MODE:
BlinkCyan();
break;
case IMU_CALIBERATION_MODE:
BlinkPurple();
break;
default:
BlinkYellow();
}
osDelay(10); // 每个任务最后都要写在while里要不然会导致任务切换失败
void ws2812Task(void *argument)
{
(void) argument;
while (1)
{
switch (RobotMode)
{
case NORMAL_MODE:
BlinkGreen();
break;
case SYS_ERROR_OCCURRED:
BlinkRed();
break;
case REMOTE_NOT_CONNECTED:
BlinkYellow();
break;
case REMOTE_CONNECTED:
BlinkBlue();
break;
case AUTO_SHOOTING_MODE:
BlinkCyan();
break;
case IMU_CALIBERATION_MODE:
BlinkPurple();
break;
default:
BlinkYellow();
}
osDelay(10); // 每个任务最后都要写在while里要不然会导致任务切换失败
}
}
void BlinkYellow(void) {
r = 255; // 红色分量
g = 255; // 绿色分量
b = 0; // 色分量
WS2812_Ctrl(r, g, b); // 设置为黄色
delay_ticks(500); // 延时500毫秒
WS2812_Ctrl(0, 0, 0); // 关闭LED灯
delay_ticks(500); // 延时500毫秒
void BlinkYellow(void)
{
r = 255; // 色分量
g = 255; // 绿色分量
b = 0; // 蓝色分量
WS2812_Ctrl(r, g, b); // 设置为黄色
delay_ticks(500); // 延时500毫秒
WS2812_Ctrl(0, 0, 0); // 关闭LED灯
delay_ticks(500); // 延时500毫秒
}
void BlinkRed(void) {
r = 255; // 红色分量
g = 0; // 绿色分量
b = 0; // 色分量
WS2812_Ctrl(r, g, b); // 设置为红色
delay_ticks(500); // 延时500毫秒
WS2812_Ctrl(0, 0, 0); // 关闭LED灯
delay_ticks(500); // 延时500毫秒
void BlinkRed(void)
{
r = 255; // 色分量
g = 0; // 绿色分量
b = 0; // 蓝色分量
WS2812_Ctrl(r, g, b); // 设置为红色
delay_ticks(500); // 延时500毫秒
WS2812_Ctrl(0, 0, 0); // 关闭LED灯
delay_ticks(500); // 延时500毫秒
}
void BlinkGreen(void) {
r = 0; // 红色分量
g = 255; // 绿色分量
b = 0; // 色分量
WS2812_Ctrl(r, g, b); // 设置为绿色
delay_ticks(500); // 延时500毫秒
WS2812_Ctrl(0, 0, 0); // 关闭LED灯
delay_ticks(500); // 延时500毫秒
void BlinkGreen(void)
{
r = 0; // 色分量
g = 255; // 绿色分量
b = 0; // 蓝色分量
WS2812_Ctrl(r, g, b); // 设置为绿色
delay_ticks(500); // 延时500毫秒
WS2812_Ctrl(0, 0, 0); // 关闭LED灯
delay_ticks(500); // 延时500毫秒
}
void BlinkBlue(void) {
r = 0; // 红色分量
g = 0; // 绿色分量
b = 255; // 色分量
WS2812_Ctrl(r, g, b); // 设置为蓝色
delay_ticks(500); // 延时500毫秒
WS2812_Ctrl(0, 0, 0); // 关闭LED灯
delay_ticks(500); // 延时500毫秒
void BlinkBlue(void)
{
r = 0; // 色分量
g = 0; // 绿色分量
b = 255; // 蓝色分量
WS2812_Ctrl(r, g, b); // 设置为蓝色
delay_ticks(500); // 延时500毫秒
WS2812_Ctrl(0, 0, 0); // 关闭LED灯
delay_ticks(500); // 延时500毫秒
}
void BlinkWhite(void) {
r = 255; // 红色分量
g = 255; // 绿色分量
b = 255; // 色分量
WS2812_Ctrl(r, g, b); // 设置为白色
delay_ticks(500); // 延时500毫秒
WS2812_Ctrl(0, 0, 0); // 关闭LED灯
delay_ticks(500); // 延时500毫秒
void BlinkWhite(void)
{
r = 255; // 色分量
g = 255; // 绿色分量
b = 255; // 蓝色分量
WS2812_Ctrl(r, g, b); // 设置为白色
delay_ticks(500); // 延时500毫秒
WS2812_Ctrl(0, 0, 0); // 关闭LED灯
delay_ticks(500); // 延时500毫秒
}
void BlinkCyan(void) {
r = 0; // 红色分量
g = 255; // 绿色分量
b = 255; // 色分量
WS2812_Ctrl(r, g, b); // 设置为青色
delay_ticks(500); // 延时500毫秒
WS2812_Ctrl(0, 0, 0); // 关闭LED灯
delay_ticks(500); // 延时500毫秒
void BlinkCyan(void)
{
r = 0; // 色分量
g = 255; // 绿色分量
b = 255; // 蓝色分量
WS2812_Ctrl(r, g, b); // 设置为青色
delay_ticks(500); // 延时500毫秒
WS2812_Ctrl(0, 0, 0); // 关闭LED灯
delay_ticks(500); // 延时500毫秒
}
void BlinkPurple(void) {
r = 255; // 红色分量
g = 0; // 绿色分量
b = 255; // 色分量
WS2812_Ctrl(r, g, b); // 设置为紫色
delay_ticks(500); // 延时500毫秒
WS2812_Ctrl(0, 0, 0); // 关闭LED灯
delay_ticks(500); // 延时500毫秒
void BlinkPurple(void)
{
r = 255; // 色分量
g = 0; // 绿色分量
b = 255; // 蓝色分量
WS2812_Ctrl(r, g, b); // 设置为紫色
delay_ticks(500); // 延时500毫秒
WS2812_Ctrl(0, 0, 0); // 关闭LED灯
delay_ticks(500); // 延时500毫秒
}
void PWMControwLed(void) {
//
void PWMControwLed(void)
{
//
// WS2812_Ctrl(r, g, b);
// r++;
// g += 5;
// b += 10;
// WS2812_Ctrl(r, g, b);
// r++;
// g += 5;
// b += 10;
// r=0;g=255;b=0;//绿色
// WS2812_Ctrl(r, g, b);
// delay_ticks(500); // 使用延时函数代替osDelay避免任务切换失败
// r=0;g=255;b=0;//绿色
// WS2812_Ctrl(r, g, b);
// delay_ticks(500); // 使用延时函数代替osDelay避免任务切换失败
// r=0;g=0;b=255;//蓝色
// WS2812_Ctrl(r, g, b);
// delay_ticks(500);
// r=0;g=0;b=255;//蓝色
// WS2812_Ctrl(r, g, b);
// delay_ticks(500);
// r=0;g=255;b=255;//青色
// WS2812_Ctrl(r, g, b);
// delay_ticks(500);
// r=0;g=255;b=255;//青色
// WS2812_Ctrl(r, g, b);
// delay_ticks(500);
// r=255;g=0;b=255;//紫色
// WS2812_Ctrl(r, g, b);
// delay_ticks(500);
// r=255;g=0;b=255;//紫色
// WS2812_Ctrl(r, g, b);
// delay_ticks(500);
// r=255;g=255;b=255;
// WS2812_Ctrl(r, g, b);
// delay_ticks(1000);
// osDelay(1);
// osDelay(100);
// r=255;g=255;b=255;
// WS2812_Ctrl(r, g, b);
// delay_ticks(1000);
// osDelay(1);
// osDelay(100);
}

View File

@@ -10,6 +10,8 @@
/*---------------------FUNCTIONS---------------------*/
void ws2812Task(void *argument);
void robotSelfCheck(void);
void BlinkYellow(void);
void BlinkRed(void);

View File

@@ -1,3 +1,19 @@
/**
* @file buzzer.c
* @brief 蜂鸣器控制
* @author TuxMonkey
* @version v1.0-bsp
* @date 2025-11-15
*
* @copyright Copyright (c) 2025 DLMU-C.ONE
*
* @par 修改日志:
* <table>
* <tr><th>Date <th>Version <th>Author <th>Description
* <tr><td>25-11.15 <td>v1.0-bsp <td>TuxMonkey <td>蜂鸣器部分
* </table>
*/
/*---------------------INCLUDES---------------------*/
#include "buzzer.h"
#include "cmsis_os.h"
@@ -263,17 +279,40 @@ void systemstart_song(void)
// delay_ticks(1000);
//DJI
// buzzer_note(80,0.5);//高音do
// delay_ticks(450);
// buzzer_note(90,0.5);//高音re
// delay_ticks(450);
// buzzer_note(120,0.5);//高音sol
// delay_ticks(550);
SongLaoda();
// buzzer_note(80, 0.5); //高音do
// HAL_Delay(450);
// buzzer_note(90, 0.5); //高音re
// HAL_Delay(450);
// buzzer_note(120, 0.5); //高音sol
// HAL_Delay(550);
SongSpring(); //为什么要演奏春日影!!!
// SongLaoda();
buzzer_off();
}
void SongSpring(void) //春日影!!!
{
buzzer_note(165, 0.5); //mi
HAL_Delay(280);
buzzer_note(150, 0.5); //re
HAL_Delay(280);
buzzer_note(135, 0.5); //do
HAL_Delay(280);
buzzer_note(150, 0.5); //re
HAL_Delay(280);
buzzer_note(165, 0.5); //mi
HAL_Delay(280);
buzzer_note(170, 0.5); //fa
HAL_Delay(200);
buzzer_note(165, 0.5); //mi
HAL_Delay(200);
buzzer_note(150, 0.5); //re
HAL_Delay(300);
}
void SongLaoda(void)
{
// 播放歌曲牢大

View File

@@ -40,20 +40,29 @@ extern const uint8_t sound_autoaiming[];
void systemstart_song(void);
//
void buzzerTask(void const * argument);
void buzzerTask(void const *argument);
void SongLaoda(void);
void SongSpring(void);
//
extern void SetBuzzerOff(void);
extern void SetBuzzerFrequence(uint16_t freq);
extern void buzzer_on(uint16_t psc, uint16_t pwm);
extern void buzzer_off(void);
extern void buzzer_note(uint16_t note,float volume);
extern void buzzer_note(uint16_t note, float volume);
//
extern int8_t SetBuzzerState(uint8_t state);
extern void PlayingSong(const uint16_t *song, uint16_t len);
extern void PlayingSound(const uint8_t *sound, uint16_t len);

View File

@@ -1,6 +1,5 @@
Breakpoint=D:/RM/Elec Control/TronOneH7_Scaffold/Core/Src/main.c:133:3, State=BP_STATE_ON
OpenDocument="tasks.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Middlewares/Third_Party/FreeRTOS/Source/tasks.c", Line=2303
OpenDocument="tasks.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Middlewares/Third_Party/FreeRTOS/Source/tasks.c", Line=2297
OpenDocument="stm32h7xx_hal.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c", Line=329
OpenDocument="list.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Middlewares/Third_Party/FreeRTOS/Source/list.c", Line=144
OpenDocument="cmsis_gcc.h", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Drivers/CMSIS/Include/cmsis_gcc.h", Line=264
@@ -8,24 +7,25 @@ OpenDocument="cmsis_os2.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Midd
OpenDocument="stm32h7xx_it.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Core/Src/stm32h7xx_it.c", Line=99
OpenDocument="delayticks.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/bsp/delayticks/delayticks.c", Line=0
OpenDocument="buzzer.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/module/periph/buzzer/buzzer.c", Line=191
OpenDocument="main.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Core/Src/main.c", Line=110
OpenDocument="main.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Core/Src/main.c", Line=69
OpenToolbar="Debug", Floating=0, x=0, y=0
OpenToolbar="Breakpoints", Floating=0, x=1, y=0
OpenWindow="Registers 1", DockArea=BOTTOM, x=1, y=0, w=363, h=181, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, FilteredItems=[], RefreshRate=1
OpenWindow="Source Files", DockArea=LEFT, x=0, y=0, w=551, h=272, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Disassembly", DockArea=BOTTOM, x=2, y=0, w=627, h=181, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Break & Tracepoints", DockArea=LEFT, x=0, y=1, w=551, h=295, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, VectorCatchIndexMask=254
OpenWindow="Memory 1", DockArea=BOTTOM, x=3, y=0, w=467, h=181, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, EditorAddress=0x20005E30
OpenWindow="Global Data", DockArea=RIGHT, x=0, y=2, w=681, h=452, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Watched Data 1", DockArea=LEFT, x=0, y=2, w=551, h=299, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Functions", DockArea=LEFT, x=0, y=3, w=551, h=206, TabPos=1, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Call Graph", DockArea=LEFT, x=0, y=3, w=551, h=206, TabPos=2, TopOfStack=1, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Data Sampling", DockArea=BOTTOM, x=0, y=0, w=1100, h=181, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, VisibleTab=0, UniformSampleSpacing=0
OpenWindow="Timeline", DockArea=RIGHT, x=0, y=1, w=681, h=431, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=1, DataPaneShown=1, PowerPaneShown=1, CodePaneShown=1, PinCursor="Cursor Movable", TimePerDiv="1 ns / Div", TimeStampFormat="Time", DataGraphDrawAsPoints=0, DataGraphLegendShown=1, DataGraphUniformSampleSpacing=0, DataGraphLegendPosition="491;-46", PowerGraphDrawAsPoints=0, PowerGraphLegendShown=1, PowerGraphAvgFilterTime=Off, PowerGraphAvgFilterLen=Off, PowerGraphUniformSampleSpacing=0, PowerGraphLegendPosition="459;-65", CodeGraphLegendShown=1, CodeGraphLegendPosition="475;0"
OpenWindow="Console", DockArea=LEFT, x=0, y=3, w=551, h=206, TabPos=0, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="RTOS", DockArea=RIGHT, x=0, y=0, w=681, h=210, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, Showing=""
OpenWindow="Registers 1", DockArea=BOTTOM, x=1, y=0, w=362, h=181, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, FilteredItems=[], RefreshRate=1
OpenWindow="Source Files", DockArea=LEFT, x=0, y=0, w=551, h=273, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Disassembly", DockArea=BOTTOM, x=2, y=0, w=628, h=181, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Break & Tracepoints", DockArea=LEFT, x=0, y=1, w=551, h=290, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, VectorCatchIndexMask=254
OpenWindow="Memory 1", DockArea=BOTTOM, x=3, y=0, w=466, h=181, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, EditorAddress=0x20005E30
OpenWindow="Global Data", DockArea=RIGHT, x=0, y=2, w=681, h=441, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Watched Data 1", DockArea=LEFT, x=0, y=2, w=551, h=295, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Functions", DockArea=LEFT, x=0, y=3, w=551, h=214, TabPos=1, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Call Graph", DockArea=LEFT, x=0, y=3, w=551, h=214, TabPos=2, TopOfStack=1, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Data Sampling", DockArea=BOTTOM, x=0, y=0, w=1101, h=181, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, VisibleTab=0, UniformSampleSpacing=0
OpenWindow="Timeline", DockArea=RIGHT, x=0, y=1, w=681, h=423, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=1, DataPaneShown=1, PowerPaneShown=1, CodePaneShown=1, PinCursor="Cursor Movable", TimePerDiv="1 ns / Div", TimeStampFormat="Time", DataGraphDrawAsPoints=0, DataGraphLegendShown=1, DataGraphUniformSampleSpacing=0, DataGraphLegendPosition="491;-46", PowerGraphDrawAsPoints=0, PowerGraphLegendShown=1, PowerGraphAvgFilterTime=Off, PowerGraphAvgFilterLen=Off, PowerGraphUniformSampleSpacing=0, PowerGraphLegendPosition="459;-65", CodeGraphLegendShown=1, CodeGraphLegendPosition="475;0"
OpenWindow="Console", DockArea=LEFT, x=0, y=3, w=551, h=214, TabPos=0, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="RTOS", DockArea=RIGHT, x=0, y=0, w=681, h=229, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, Showing=""
TableHeader="Call Graph", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Stack Total";"Stack Local";"Code Total";"Code Local";"Depth";"Called From"], ColWidths=[384;100;100;100;100;100;118]
TableHeader="Functions", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Address";"Size";"#Insts";"Source"], ColWidths=[1164;100;100;100;100]
TableHeader="Global Data", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Value";"Location";"Size";"Type";"Scope"], ColWidths=[222;130;100;54;95;414]
TableHeader="Global Data", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Value";"Location";"Size";"Type";"Scope"], ColWidths=[222;130;100;54;95;100]
TableHeader="Vector Catches", SortCol="None", SortOrder="ASCENDING", VisibleCols=["";"Vector Catch";"Description"], ColWidths=[50;300;500]
TableHeader="Break & Tracepoints", SortCol="None", SortOrder="ASCENDING", VisibleCols=["";"Type";"Location";"Extras"], ColWidths=[100;100;142;209]
TableHeader="Source Files", SortCol="File", SortOrder="ASCENDING", VisibleCols=["File";"Status";"Size";"#Insts";"Path"], ColWidths=[229;100;100;100;902]
@@ -35,5 +35,4 @@ TableHeader="Power Sampling", SortCol="Index", SortOrder="ASCENDING", VisibleCol
TableHeader="Registers 1", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Value";"Description"], ColWidths=[100;105;294]
TableHeader="Watched Data 1", SortCol="Expression", SortOrder="ASCENDING", VisibleCols=["Expression";"Value";"Location"], ColWidths=[171;101;279]
TableHeader="RegisterSelectionDialog", SortCol="None", SortOrder="ASCENDING", VisibleCols=[], ColWidths=[]
TableHeader="Call Graph", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Stack Total";"Stack Local";"Code Total";"Code Local";"Depth";"Called From"], ColWidths=[384;100;100;100;100;100;118]
TableHeader="TargetExceptionDialog", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Value";"Address";"Description"], ColWidths=[27;27;27;38]