📄 main.c
字号:
/*******************************************************************************
* File Name : main.c
* Author : Wuhan R&D Center, Embest
* Date First Issued : 08/08/2008
* Description : Main program body
********************************************************************************/
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"
#include "stdlib.h"
#include "string.h"
#include "flash_write.h"
#include "secure.h"
#include "Board_Configure.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
/*******************************************************************************
* Function Name : main
* Description : Main program
* Input : None
* Output : None
* Return : None
*******************************************************************************/
int main(void)
{
vu16 i,j;
char* temp_secure;
vu32 code,temp_code;
/* Configure the system clocks */
RCC_Configuration();
/* NVIC Configuration */
NVIC_Configuration();
/* Configure the GPIOs */
GPIO_Configuration();
/* Configure the USART1 */
USART_Configuration();
// printf("\r\n\r\n---------System boot success!----------\r\n");
// code=CRC_CalcBlockCRC((uint32_t *)secure,256);
// for(i=0;i<1024;i++)
// {
// if(secure[i]==(char)(code>>24))
// {
// j=1;
// printf("1");
// }
// if(secure[i]==(char)((code>>16)&0x00ff))
// {
// j=1;
// printf("2");
// }
// if(secure[i]==(char)((code>>8)&0x00ff))
// {
// j=1;
// printf("3");
// }
// if(secure[i]==(char)(code&0x00ff))
// {
// j=1;
// printf("4");
// }
// if(j==1)
// for(j=0;j<32;j++)
// if(i==4*secure[j])
// printf("ok");
// }
CRC_ResetDR();
code=CRC_CalcBlockCRC((uint32_t *)(0x1ffff7e0),9);
temp_code=secure[0x0344]<<24|secure[0x0318]<<16|secure[0xfd]<<8|secure[0x036a];
//加密
CRC_ResetDR();
if(CRC_CalcBlockCRC((uint32_t *)secure,256)==temp_code)
{
temp_secure=malloc(1025);
memmove(temp_secure,secure,1024);
for(i=0;i<32;i++)
{
temp_secure[4*temp_secure[i]]=(char)(code&0x01);
temp_secure[4*temp_secure[i]]^=temp_secure[4*temp_secure[i+992]];
code=code>>1;
}
Flash_Write((char *)secure,(char *)temp_secure,1024);
free(temp_secure);
// printf("\r\nSecure configure!");
}
//解密
else
{
temp_code=0;
temp_secure=malloc(1025);
memmove(temp_secure,secure,1024);
for(i=0;i<32;i++)
{
temp_secure[4*temp_secure[31-i]]^=temp_secure[4*temp_secure[1023-i]];
temp_code=temp_code*2+temp_secure[4*temp_secure[31-i]];
}
free(temp_secure);
if(code!=temp_code)
while(1);
// printf("\r\nThe ID is right!");
}
while(1)
{
}
}
/******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -