Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
lwc
/
compare
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Pipelines
Members
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
cac7c7a9
authored
5 years ago
by
Sebastian Renner
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Experimental serial comm concept for STM (unfinished)
parent
ed417d58
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
138 additions
and
72 deletions
+138
-72
templates/blackpill/Inc/api.h
+5
-0
templates/blackpill/Inc/crypto_aead.h
+19
-0
templates/blackpill/Src/main.c
+114
-72
No files found.
templates/blackpill/Inc/api.h
0 → 100644
View file @
cac7c7a9
#define CRYPTO_KEYBYTES 16
#define CRYPTO_NSECBYTES 0
#define CRYPTO_NPUBBYTES 16
#define CRYPTO_ABYTES 16
#define CRYPTO_NOOVERLAP 1
This diff is collapsed.
Click to expand it.
templates/blackpill/Inc/crypto_aead.h
0 → 100644
View file @
cac7c7a9
int
crypto_aead_encrypt
(
unsigned
char
*
c
,
unsigned
long
long
*
clen
,
const
unsigned
char
*
m
,
unsigned
long
long
mlen
,
const
unsigned
char
*
ad
,
unsigned
long
long
adlen
,
const
unsigned
char
*
nsec
,
const
unsigned
char
*
npub
,
const
unsigned
char
*
k
);
int
crypto_aead_decrypt
(
unsigned
char
*
m
,
unsigned
long
long
*
outputmlen
,
unsigned
char
*
nsec
,
const
unsigned
char
*
c
,
unsigned
long
long
clen
,
const
unsigned
char
*
ad
,
unsigned
long
long
adlen
,
const
unsigned
char
*
npub
,
const
unsigned
char
*
k
);
This diff is collapsed.
Click to expand it.
templates/blackpill/Src/main.c
View file @
cac7c7a9
...
...
@@ -40,52 +40,86 @@
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include <stdint.h>
#include "crypto_aead.h"
#include "api.h"
#ifndef KEY_LENGTH
#define KEY_LENGTH 16
#endif
#ifndef NSEC_LENGTH
#define NSEC_LENGTH 0
#endif
#ifndef NPUB_LENGTH
#define NPUB_LENGTH 0
#endif
unsigned
char
c
[
1400
];
unsigned
long
long
clen
=
0
;
unsigned
char
m
[
1400
];
unsigned
long
long
mlen
=
0
;
unsigned
char
ad
[
1400
];
unsigned
long
long
adlen
=
0
;
unsigned
char
nsec
[
512
];
unsigned
long
long
nslen
=
NSEC_LENGTH
;
unsigned
char
npub
[
512
];
unsigned
long
long
nplen
=
NPUB_LENGTH
;
unsigned
char
k
[
512
];
unsigned
long
long
klen
=
KEY_LENGTH
;
unsigned
char
rcv
;
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
/* USER CODE END PTD */
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */
/* Private function prototypes -----------------------------------------------*/
void
SystemClock_Config
(
void
);
static
void
MX_GPIO_Init
(
void
);
static
void
MX_USART1_UART_Init
(
void
);
static
void
read_variable_serial
(
unsigned
char
action
);
static
void
write_variable_serial
(
unsigned
char
target
[],
unsigned
long
long
len
);
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
static
void
read_variable_serial
(
unsigned
char
action
){
/* USER CODE END PM */
uint32_t
len
;
for
(
int
i
=
3
;
i
>=
0
;
i
--
)
{
while
(
LL_USART_IsActiveFlag_RXNE
(
USART1
));
rcv
=
LL_USART_ReceiveData8
(
USART1
);
len
|=
(
uint32_t
)
rcv
<<
i
*
8
;
}
/* Private variables ---------------------------------------------------------*/
for
(
int
i
=
0
;
i
<
len
;
i
++
)
{
while
(
LL_USART_IsActiveFlag_RXNE
(
USART1
));
rcv
=
LL_USART_ReceiveData8
(
USART1
);
// Implement all cases or use another concept at all
switch
(
action
)
{
case
'k'
:
k
[
i
]
=
rcv
;
break
;
default
:
return
-
1
:
}
/* USER CODE BEGIN PV */
}
/* USER CODE END PV */
static
void
write_variable_serial
(
unsigned
char
target
[],
unsigned
long
long
len
)
{
/* Private function prototypes -----------------------------------------------*/
void
SystemClock_Config
(
void
);
static
void
MX_GPIO_Init
(
void
);
static
void
MX_USART1_UART_Init
(
void
);
/* USER CODE BEGIN PFP */
unsigned
char
trm
;
for
(
int
i
=
3
;
i
>=
0
;
i
--
)
{
trm
=
(
uint8_t
)
len
>>
i
*
8
;
while
(
!
LL_USART_IsActiveFlag_TXE
(
USART1
));
LL_USART_TransmitData8
(
USART1
,
trm
);
}
/* USER CODE END PFP */
for
(
int
i
=
0
;
i
<
len
;
i
++
)
{
while
(
!
LL_USART_IsActiveFlag_TXE
(
USART1
));
LL_USART_TransmitData8
(
USART1
,
target
[
i
]);
}
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
}
/* USER CODE END 0 */
/**
* @brief The application entry point.
* @retval int
*/
int
main
(
void
)
{
int
main
(
void
)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
...
...
@@ -126,31 +160,39 @@ int main(void)
/* Infinite loop */
/* USER CODE BEGIN WHILE */
uint8_t
trm
=
0xFF
;
uint8_t
rcv
;
while
(
1
)
{
while
(
1
)
{
/* USER CODE END WHILE */
while
(
!
LL_USART_IsActiveFlag_TXE
(
USART1
));
LL_GPIO_TogglePin
(
GPIOB
,
LL_GPIO_PIN_12
);
LL_USART_TransmitData8
(
USART1
,
trm
);
LL_mDelay
(
100
);
while
(
LL_USART_IsActiveFlag_RXNE
(
USART1
));
LL_GPIO_TogglePin
(
GPIOB
,
LL_GPIO_PIN_12
);
rcv
=
LL_USART_ReceiveData8
(
USART1
);
LL_mDelay
(
100
);
/* USER CODE BEGIN 3 */
switch
(
rcv
)
{
case
'c'
:
case
'm'
:
case
'a'
:
case
'k'
:
case
's'
:
case
'p'
:
read_variable
(
rcv
);
break
;
case
'C'
:
write_variable
(
c
,
clen
);
break
;
case
'M'
:
write_variable
(
m
,
mlen
);
break
;
case
'A'
:
write_variable
(
ad
,
adlen
);
break
;
case
'K'
:
write_variable
(
k
,
klen
);
break
;
case
'S'
:
write_variable
(
nsec
,
nslen
);
break
;
case
'P'
:
write_variable
(
npub
,
nplen
);
break
;
case
'e'
:
res
=
crypto_aead_encrypt
(
c
,
&
clen
,
m
,
mlen
,
ad
,
adlen
,
nsec
,
npub
,
k
);
break
;
default
:
return
2
;
}
/* USER CODE END 3 */
}
/**
/**
* @brief System Clock Configuration
* @retval None
*/
void
SystemClock_Config
(
void
)
{
void
SystemClock_Config
(
void
)
{
LL_FLASH_SetLatency
(
LL_FLASH_LATENCY_1
);
if
(
LL_FLASH_GetLatency
()
!=
LL_FLASH_LATENCY_1
)
...
...
@@ -186,15 +228,15 @@ void SystemClock_Config(void)
LL_Init1msTick
(
48000000
);
LL_SYSTICK_SetClkSource
(
LL_SYSTICK_CLKSOURCE_HCLK
);
LL_SetSystemCoreClock
(
48000000
);
}
}
/**
/**
* @brief USART1 Initialization Function
* @param None
* @retval None
*/
static
void
MX_USART1_UART_Init
(
void
)
{
static
void
MX_USART1_UART_Init
(
void
)
{
/* USER CODE BEGIN USART1_Init 0 */
...
...
@@ -238,15 +280,15 @@ static void MX_USART1_UART_Init(void)
/* USER CODE END USART1_Init 2 */
}
}
/**
/**
* @brief GPIO Initialization Function
* @param None
* @retval None
*/
static
void
MX_GPIO_Init
(
void
)
{
static
void
MX_GPIO_Init
(
void
)
{
LL_GPIO_InitTypeDef
GPIO_InitStruct
=
{
0
};
/* GPIO Ports Clock Enable */
...
...
@@ -293,39 +335,39 @@ static void MX_GPIO_Init(void)
/**/
LL_GPIO_AF_EnableRemap_PD01
();
}
}
/* USER CODE BEGIN 4 */
/* USER CODE BEGIN 4 */
/* USER CODE END 4 */
/* USER CODE END 4 */
/**
/**
* @brief This function is executed in case of error occurrence.
* @retval None
*/
void
Error_Handler
(
void
)
{
void
Error_Handler
(
void
)
{
/* USER CODE BEGIN Error_Handler_Debug */
/* User can add his own implementation to report the HAL error return state */
/* USER CODE END Error_Handler_Debug */
}
}
#ifdef USE_FULL_ASSERT
/**
/**
* @brief Reports the name of the source file and the source line number
* where the assert_param error has occurred.
* @param file: pointer to the source file name
* @param line: assert_param error line source number
* @retval None
*/
void
assert_failed
(
uint8_t
*
file
,
uint32_t
line
)
{
void
assert_failed
(
uint8_t
*
file
,
uint32_t
line
)
{
/* USER CODE BEGIN 6 */
/* User can add his own implementation to report the file name and line number,
tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
/* USER CODE END 6 */
}
}
#endif
/* USE_FULL_ASSERT */
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment