diff --git a/Morse_code_PCB/Morse_code_PCB.kicad_prl b/Morse_code_PCB/Morse_code_PCB.kicad_prl
index 34b4f0b..420fa84 100644
--- a/Morse_code_PCB/Morse_code_PCB.kicad_prl
+++ b/Morse_code_PCB/Morse_code_PCB.kicad_prl
@@ -1,6 +1,6 @@
{
"board": {
- "active_layer": 0,
+ "active_layer": 31,
"active_layer_preset": "",
"auto_track_width": true,
"hidden_nets": [],
diff --git a/stm32F030F4_code/.settings/language.settings.xml b/stm32F030F4_code/.settings/language.settings.xml
index 25f1d18..ef57c77 100644
--- a/stm32F030F4_code/.settings/language.settings.xml
+++ b/stm32F030F4_code/.settings/language.settings.xml
@@ -6,7 +6,7 @@
-
+
@@ -18,7 +18,7 @@
-
+
diff --git a/stm32F030F4_code/Core/Src/main.c b/stm32F030F4_code/Core/Src/main.c
index c52bcec..3997b17 100644
--- a/stm32F030F4_code/Core/Src/main.c
+++ b/stm32F030F4_code/Core/Src/main.c
@@ -350,8 +350,8 @@ static void MX_GPIO_Init(void)
/*Configure GPIO pin : SW_C_Pin */
GPIO_InitStruct.Pin = SW_C_Pin;
- GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(SW_C_GPIO_Port, &GPIO_InitStruct);
}
diff --git a/stm32F030F4_code/mydrivers/my.c b/stm32F030F4_code/mydrivers/my.c
index 5d313e3..04e438f 100644
--- a/stm32F030F4_code/mydrivers/my.c
+++ b/stm32F030F4_code/mydrivers/my.c
@@ -8,18 +8,226 @@
#include "my.h"
+#define morse_t1 150
+#define morse_t2 (morse_t1*3)
+#define morse_hz 100
+
+#define morse_play_t1 50
+#define morse_play_t2 (morse_play_t1*3)
+#define morse_play_hz 100
+
+char push_key=0,last_key=1;
+uint32_t morse_t=0;
+uint32_t morse_time_out=0;
+uint16_t morse_temp;
+
+#define morse_input_buff_num 64
+char morse_input_buff[morse_input_buff_num+1];
+int morse_input_flag=0;
+int morse_char_flag=0;
+int morse_x,morse_y;
+char morse_flah=0;
+uint8_t morse_letter_temp=0;
+uint8_t morse_letter_flag=0;
+#define morsecodenum 38
+const struct morsecode morsecodes[morsecodenum]=
+{
+ {
+ 2,0b01000000,'A'
+ },
+ {
+ 4,0b10000000,'B'
+ },
+ {
+ 4,0b10100000,'C'
+ },
+ {
+ 3,0b10000000,'D'
+ },
+ {
+ 1,0b00000000,'E'
+ },
+ {
+ 4,0b00100000,'F'
+ },
+ {
+ 3,0b11000000,'G'
+ },
+ {
+ 4,0b00000000,'H'
+ },
+ {
+ 2,0b00000000,'I'
+ },
+ {
+ 4,0b01110000,'J'
+ },
+ {
+ 3,0b10100000,'K'
+ },
+ {
+ 4,0b01000000,'L'
+ },
+ {
+ 2,0b11000000,'M'
+ },
+ {
+ 2,0b10000000,'N'
+ },
+ {
+ 3,0b11100000,'O'
+ },
+ {
+ 4,0b01100000,'P'
+ },
+ {
+ 4,0b11010000,'Q'
+ },
+ {
+ 3,0b01000000,'R'
+ },
+ {
+ 3,0b00000000,'S'
+ },
+ {
+ 1,0b10000000,'T'
+ },
+ {
+ 3,0b00100000,'U'
+ },
+ {
+ 4,0b00010000,'V'
+ },
+ {
+ 3,0b01100000,'W'
+ },
+ {
+ 4,0b10010000,'X'
+ },
+ {
+ 4,0b10110000,'Y'
+ },
+ {
+ 4,0b11000000,'Z'
+ },
+ {
+ 5,0b01111000,'1'
+ },
+ {
+ 5,0b00111000,'2'
+ },
+ {
+ 5,0b00011000,'3'
+ },
+ {
+ 5,0b00001000,'4'
+ },
+ {
+ 5,0b00000000,'5'
+ },
+ {
+ 5,0b10000000,'6'
+ },
+ {
+ 5,0b11000000,'7'
+ },
+ {
+ 5,0b11100000,'8'
+ },
+ {
+ 5,0b11110000,'9'
+ },
+ {
+ 5,0b11111000,'0'
+ },
+ {
+ 6,0b00110000,'?'
+ },
+ {
+ 5,0b10010000,'/'
+ },
+
+};
+
+char getmorsecode(uint8_t len,uint8_t code)
+{
+ for(int a=0;amorse_t2)
+ {
+ //time out error
+ }else if(morse_temp>morse_t1)
+ {
+ //-
+ morse_input_buff[morse_input_flag]='-';
+ morse_letter_temp|=(0x80>>morse_letter_flag);
+ }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;}
+ //play_ones(0,0);
+ }
+
+
+ last_key=push_key;
+ morse_time_out=HAL_GetTick();
+ }
+
+ if(push_key==1)
+ {
+ //Get cursor on the screen
+ if((HAL_GetTick()-morse_time_out)>morse_t1)
+ {
+ if((morse_input_flag-morse_char_flag)>0)
+ {
+
+ get_char_temp=getmorsecode(morse_letter_flag,morse_letter_temp);
+ morse_letter_flag=0;
+ morse_letter_temp=0;
+ OLED_ShowStr(0,0,morse_input_buff);
+ }
+ }
+
+ }
}
}
diff --git a/stm32F030F4_code/mydrivers/my.h b/stm32F030F4_code/mydrivers/my.h
index 11327cb..a412653 100644
--- a/stm32F030F4_code/mydrivers/my.h
+++ b/stm32F030F4_code/mydrivers/my.h
@@ -11,6 +11,18 @@
#include "main.h"
#include "OLED.h"
+#define KEY0 HAL_GPIO_ReadPin(tack_A_GPIO_Port, tack_A_Pin)
+#define KEY1 HAL_GPIO_ReadPin(tack_B_GPIO_Port, tack_B_Pin)
+#define SW_C HAL_GPIO_ReadPin(SW_C_GPIO_Port, SW_C_Pin)
+
+
+struct morsecode
+{
+ uint8_t len;
+ uint8_t code;
+ char letter;
+};
+
void mymain();
#endif /* MY_H_ */
diff --git a/stm32F030F4_code/stm32F030F4_code Debug.launch b/stm32F030F4_code/stm32F030F4_code Debug.launch
index 7bc079c..da8292a 100644
--- a/stm32F030F4_code/stm32F030F4_code Debug.launch
+++ b/stm32F030F4_code/stm32F030F4_code Debug.launch
@@ -38,7 +38,7 @@
-
+
diff --git a/stm32F030F4_code/stm32F030F4_code.ioc b/stm32F030F4_code/stm32F030F4_code.ioc
index f57f498..9a0564c 100644
--- a/stm32F030F4_code/stm32F030F4_code.ioc
+++ b/stm32F030F4_code/stm32F030F4_code.ioc
@@ -62,10 +62,11 @@ PA7.Locked=true
PA7.Signal=GPXTI7
PA9.Mode=I2C
PA9.Signal=I2C1_SCL
-PB1.GPIOParameters=GPIO_Label
+PB1.GPIOParameters=GPIO_PuPd,GPIO_Label
PB1.GPIO_Label=SW_C
+PB1.GPIO_PuPd=GPIO_PULLUP
PB1.Locked=true
-PB1.Signal=GPXTI1
+PB1.Signal=GPIO_Input
PF0-OSC_IN.GPIOParameters=GPIO_Label
PF0-OSC_IN.GPIO_Label=tack_A
PF0-OSC_IN.Locked=true
@@ -116,8 +117,6 @@ RCC.SYSCLKFreq_VALUE=48000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
RCC.TimSysFreq_Value=48000000
RCC.USART1Freq_Value=48000000
-SH.GPXTI1.0=GPIO_EXTI1
-SH.GPXTI1.ConfNb=1
SH.GPXTI6.0=GPIO_EXTI6
SH.GPXTI6.ConfNb=1
SH.GPXTI7.0=GPIO_EXTI7
@@ -131,3 +130,4 @@ VP_SYS_VS_Systick.Signal=SYS_VS_Systick
VP_TIM14_VS_ClockSourceINT.Mode=Enable_Timer
VP_TIM14_VS_ClockSourceINT.Signal=TIM14_VS_ClockSourceINT
board=custom
+isbadioc=false