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
Jul 09, 2019
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
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
);
templates/blackpill/Src/main.c
View file @
cac7c7a9
...
@@ -40,52 +40,86 @@
...
@@ -40,52 +40,86 @@
/* Includes ------------------------------------------------------------------*/
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#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 ----------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* USER CODE BEGIN Includes */
void
SystemClock_Config
(
void
);
static
void
MX_GPIO_Init
(
void
);
/* USER CODE END Includes */
static
void
MX_USART1_UART_Init
(
void
);
static
void
read_variable_serial
(
unsigned
char
action
);
/* Private typedef -----------------------------------------------------------*/
static
void
write_variable_serial
(
unsigned
char
target
[],
unsigned
long
long
len
);
/* USER CODE BEGIN PTD */
/* USER CODE END PTD */
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/
static
void
read_variable_serial
(
unsigned
char
action
){
/* USER CODE BEGIN PM */
/* 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 -----------------------------------------------*/
unsigned
char
trm
;
void
SystemClock_Config
(
void
);
for
(
int
i
=
3
;
i
>=
0
;
i
--
)
{
static
void
MX_GPIO_Init
(
void
);
trm
=
(
uint8_t
)
len
>>
i
*
8
;
static
void
MX_USART1_UART_Init
(
void
);
while
(
!
LL_USART_IsActiveFlag_TXE
(
USART1
));
/* USER CODE BEGIN PFP */
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 */
/**
int
main
(
void
)
* @brief The application entry point.
{
* @retval int
*/
int
main
(
void
)
{
/* USER CODE BEGIN 1 */
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* USER CODE END 1 */
...
@@ -126,31 +160,39 @@ int main(void)
...
@@ -126,31 +160,39 @@ int main(void)
/* Infinite loop */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
/* USER CODE BEGIN WHILE */
uint8_t
trm
=
0xFF
;
uint8_t
rcv
;
while
(
1
)
while
(
1
)
{
{
/* USER CODE END WHILE */
/* 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
));
while
(
LL_USART_IsActiveFlag_RXNE
(
USART1
));
LL_GPIO_TogglePin
(
GPIOB
,
LL_GPIO_PIN_12
);
rcv
=
LL_USART_ReceiveData8
(
USART1
);
rcv
=
LL_USART_ReceiveData8
(
USART1
);
LL_mDelay
(
100
);
switch
(
rcv
)
{
/* USER CODE BEGIN 3 */
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
* @brief System Clock Configuration
* @retval None
* @retval None
*/
*/
void
SystemClock_Config
(
void
)
void
SystemClock_Config
(
void
)
{
{
LL_FLASH_SetLatency
(
LL_FLASH_LATENCY_1
);
LL_FLASH_SetLatency
(
LL_FLASH_LATENCY_1
);
if
(
LL_FLASH_GetLatency
()
!=
LL_FLASH_LATENCY_1
)
if
(
LL_FLASH_GetLatency
()
!=
LL_FLASH_LATENCY_1
)
...
@@ -186,15 +228,15 @@ void SystemClock_Config(void)
...
@@ -186,15 +228,15 @@ void SystemClock_Config(void)
LL_Init1msTick
(
48000000
);
LL_Init1msTick
(
48000000
);
LL_SYSTICK_SetClkSource
(
LL_SYSTICK_CLKSOURCE_HCLK
);
LL_SYSTICK_SetClkSource
(
LL_SYSTICK_CLKSOURCE_HCLK
);
LL_SetSystemCoreClock
(
48000000
);
LL_SetSystemCoreClock
(
48000000
);
}
}
/**
/**
* @brief USART1 Initialization Function
* @brief USART1 Initialization Function
* @param None
* @param None
* @retval None
* @retval None
*/
*/
static
void
MX_USART1_UART_Init
(
void
)
static
void
MX_USART1_UART_Init
(
void
)
{
{
/* USER CODE BEGIN USART1_Init 0 */
/* USER CODE BEGIN USART1_Init 0 */
...
@@ -238,15 +280,15 @@ static void MX_USART1_UART_Init(void)
...
@@ -238,15 +280,15 @@ static void MX_USART1_UART_Init(void)
/* USER CODE END USART1_Init 2 */
/* USER CODE END USART1_Init 2 */
}
}
/**
/**
* @brief GPIO Initialization Function
* @brief GPIO Initialization Function
* @param None
* @param None
* @retval None
* @retval None
*/
*/
static
void
MX_GPIO_Init
(
void
)
static
void
MX_GPIO_Init
(
void
)
{
{
LL_GPIO_InitTypeDef
GPIO_InitStruct
=
{
0
};
LL_GPIO_InitTypeDef
GPIO_InitStruct
=
{
0
};
/* GPIO Ports Clock Enable */
/* GPIO Ports Clock Enable */
...
@@ -293,39 +335,39 @@ static void MX_GPIO_Init(void)
...
@@ -293,39 +335,39 @@ static void MX_GPIO_Init(void)
/**/
/**/
LL_GPIO_AF_EnableRemap_PD01
();
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.
* @brief This function is executed in case of error occurrence.
* @retval None
* @retval None
*/
*/
void
Error_Handler
(
void
)
void
Error_Handler
(
void
)
{
{
/* USER CODE BEGIN Error_Handler_Debug */
/* USER CODE BEGIN Error_Handler_Debug */
/* User can add his own implementation to report the HAL error return state */
/* User can add his own implementation to report the HAL error return state */
/* USER CODE END Error_Handler_Debug */
/* USER CODE END Error_Handler_Debug */
}
}
#ifdef USE_FULL_ASSERT
#ifdef USE_FULL_ASSERT
/**
/**
* @brief Reports the name of the source file and the source line number
* @brief Reports the name of the source file and the source line number
* where the assert_param error has occurred.
* where the assert_param error has occurred.
* @param file: pointer to the source file name
* @param file: pointer to the source file name
* @param line: assert_param error line source number
* @param line: assert_param error line source number
* @retval None
* @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 CODE BEGIN 6 */
/* User can add his own implementation to report the file name and line number,
/* 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 */
/* USER CODE END 6 */
}
}
#endif
/* USE_FULL_ASSERT */
#endif
/* USE_FULL_ASSERT */
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
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