完成莫尔斯电码功能

Signed-off-by: kevin <kevin@lmve.net>
This commit is contained in:
2022-03-06 16:00:38 +08:00
parent 88344b12bd
commit 72fbaa0e23
32 changed files with 19537 additions and 15988 deletions
+61 -5
View File
@@ -7,14 +7,14 @@
#include "APP_morsecode.h"
#define morse_t1 250
#define morse_t1 200
#define morse_t2 (morse_t1*3)
char push_key=0,last_key=1;
uint32_t morse_t=0;
uint32_t morse_time_out=0;
uint16_t morse_temp;
char morse_input_buff[65]={0};
char morse_input_buff[65];
int morse_input_flag=0;
int morse_char_flag=0;
int morse_x,morse_y;
@@ -145,6 +145,8 @@ void APP_morsecode_init(window *a_window)
{
morse_input_buff[a]='\0';
}
}
@@ -161,6 +163,8 @@ char getmorsecode(uint8_t len,uint8_t code)
return 0;
}
void APP_morsecode_loop()
{
/*
@@ -168,7 +172,53 @@ void APP_morsecode_loop()
sprintf(str,"%d %d ",morse_input_flag,morse_char_flag);
LCD_ShowString(morsecode_window->x, morsecode_window->y+100, str, 16, GREEN, RED);
*/
if(k3.code==1)
{
for(int a=0;a<64;a++)
{
if(morse_input_buff[a]=='\0')
{
break;
}
if(morse_input_buff[a]==' ')
{
add_a_note(0, 50, 300);
}else
{
for(int b=0;b<36;b++)
{
if(morsecodes[b].letter==morse_input_buff[a])
{
for(int c=0;c<morsecodes[b].len;c++)
{
if(morsecodes[b].code&(0x80>>c))
{
add_a_note(1000, 50, 200);
}else
{
add_a_note(1000, 50, 100);
}
add_a_note(0, 50, 100);
}
break;
}
}
add_a_note(0, 50, 100);
}
}
}
if(k2.code==3)
{
sprintf(morse_input_buff,"EISH5 E I S H 5");
}
if(k2.code==2)
{
sprintf(morse_input_buff,"HELLO WORLD");
}
if(k2.code==1)
{
morse_x=morsecode_window->x;
@@ -204,6 +254,7 @@ void APP_morsecode_loop()
if(push_key==0)
{
morse_t=HAL_GetTick();
play_ones(1000,50);
}else
{
morse_temp=HAL_GetTick()-morse_t;
@@ -215,14 +266,19 @@ void APP_morsecode_loop()
//-
morse_input_buff[morse_input_flag]='-';
morse_letter_temp|=(0x80>>morse_letter_flag);
morse_input_flag++;
morse_letter_flag++;
if(morse_input_flag>=morse_char_flag+8){morse_input_flag=morse_char_flag;morse_letter_flag=0;}
}else
{
//.
morse_input_buff[morse_input_flag]='.';
morse_input_flag++;
morse_letter_flag++;
if(morse_input_flag>=morse_char_flag+8){morse_input_flag=morse_char_flag;morse_letter_flag=0;}
}
morse_input_flag++;
morse_letter_flag++;
if(morse_input_flag>=morse_char_flag+8){morse_input_flag=morse_char_flag;morse_letter_flag=0;}
play_ones(0,0);
}
+8
View File
@@ -10,7 +10,9 @@
#include "touch.h"
#include "eeprom.h"
#include "key.h"
#include "buzzer.h"
extern TIM_HandleTypeDef htim4;
extern touch_device t0;
task run_loop;//主循环状态机
@@ -20,6 +22,9 @@ task run_loop;//
void main_app()
{
HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_3);//启动n通道的pwm
char str[64];
LCDx_Init();
EPPROM_SLOWWRITE_INIT();
@@ -46,6 +51,8 @@ void main_app()
ui->refresh_ui_flag=1;
//add_a_note(1000,50,1000);
//add_a_note(0,50,0);
while(1)
{
//LCD_set_dot(t0.pix_x, t0.pix_y, RED);
@@ -71,6 +78,7 @@ void main_app()
UI_Server(ui);
TP_Server();
EEPROM_SLOWWRITE_SERVER();
buzzer_play_server();
}
}