init
This commit is contained in:
298
USER/main.c
298
USER/main.c
@@ -1,24 +1,30 @@
|
||||
#include "sys.h"
|
||||
#include "string.h"
|
||||
/**************************************** ͷ<>ļ<EFBFBD> *********************************************/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "delay.h"
|
||||
#include "usart.h"
|
||||
#include "EC800M.h"
|
||||
#include "led.h"
|
||||
#include "key.h"
|
||||
#include "sys.h"
|
||||
#include "gps.h"
|
||||
#include "string.h"
|
||||
#include "sdram.h"
|
||||
#include "ff.h"
|
||||
#include "diskio.h"
|
||||
#include "sdio.h"
|
||||
#include "spi.h"
|
||||
#include "Function.h"
|
||||
#include "gpio.h"
|
||||
|
||||
#include "w25qxx.h"
|
||||
#include "sdram.h"
|
||||
#include "malloc.h"
|
||||
|
||||
#include "ff.h"
|
||||
#include "exfuns.h"
|
||||
#include "sdio_sdcard.h"
|
||||
|
||||
#include "usmart.h"
|
||||
|
||||
#include "cnn_model.h"
|
||||
#include "debug.h"
|
||||
#include "cnn.h"
|
||||
#include "tools.h"
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -90,53 +96,251 @@ void run_dataset(){
|
||||
model_switchdata(modelusearr[a]);
|
||||
cnn_run();
|
||||
}
|
||||
printf("\r\n运行完成\r\n");
|
||||
printf("\r\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
int main(void)
|
||||
/**************************************** <09><><EFBFBD><EFBFBD>+4Gģ<47><C4A3> *********************************************/
|
||||
|
||||
unsigned char flag_spi = 0;
|
||||
|
||||
extern uint32_t UTC; // UTCʱ<43><CAB1>
|
||||
nmea_msg gpsx; // GPS<50><53>Ϣ
|
||||
extern int month_def; //<2F>ƶ<EFBFBD><C6B6>·<EFBFBD><C2B7><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϣ
|
||||
extern int date_def;
|
||||
extern int hour_def;
|
||||
extern int min_def;
|
||||
extern int sec_def;
|
||||
const char* data_identifier = "data_string"; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>100*100<30><30><EFBFBD>ݱ<EFBFBD>ʶ
|
||||
const char* kind_identifier = "kind_string"; //<2F>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD>ͱ<EFBFBD>ʶ
|
||||
|
||||
/**************************************** FatFs<46>ļ<EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD> *********************************************/
|
||||
|
||||
FIL file1; // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
FATFS fatfs; // <20><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD>
|
||||
FILINFO fno;
|
||||
FRESULT res; // FRESULT<4C><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
UINT fnum; /* <20>ļ<EFBFBD><C4BC>ɹ<EFBFBD><C9B9><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD> */
|
||||
|
||||
/**************************************** <09><><EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD> ***************************************************/
|
||||
|
||||
void SDRAM_test(void);
|
||||
void SDRAM_SD_test(void);
|
||||
void FatFs_test(void);
|
||||
void test__(void);
|
||||
|
||||
/***************************************** <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ******************************************/
|
||||
|
||||
int main(void)
|
||||
{
|
||||
u32 total,free;
|
||||
|
||||
HAL_Init();
|
||||
Stm32_Clock_Init(360,25,2,8);
|
||||
delay_init(180);
|
||||
uart_init(9600);
|
||||
/* <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
unsigned char key;
|
||||
/************************************* <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC> ******************************************************/
|
||||
|
||||
HAL_Init(); //<2F><>ʼ<EFBFBD><CABC>HAL<41><4C>
|
||||
Stm32_Clock_Init(360,25,2,8); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,180Mhz
|
||||
delay_init(180); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
LED_Init(); //<2F><>ʼ<EFBFBD><CABC>LED
|
||||
KEY_Init(); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
GPIO_Init(); //<2F><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
||||
SDRAM_Init(); //SDRAM<41><4D>ʼ<EFBFBD><CABC>
|
||||
SD_Init(); //SD<53><44><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
|
||||
SPI_Init(); //FPGA_STM32ͨ<32><CDA8>
|
||||
usart_init1(115200); //pc
|
||||
usart_init2(115200); //4g TX:PA2 Rx:PA3
|
||||
usart_init3(115200); //gps
|
||||
TIM3_Init(4999,8999);
|
||||
|
||||
SDRAM_Init();
|
||||
LED_Init();
|
||||
my_mem_init(SRAMEX);
|
||||
|
||||
model_init();
|
||||
TIM3_Init(5000-1,9000-1); //STM32状态灯所使用的定时器
|
||||
//////////////////////////////////////////////////调试工具usmart的初始化///////////////
|
||||
usmart_dev.init(90);
|
||||
/////////////////////////////////////////////////////////////////////////////////////
|
||||
u8 _res_sd = SD_Init();
|
||||
if(_res_sd)printf("SD Card Error!\r\n");
|
||||
while(_res_sd)//检测不到SD卡
|
||||
{
|
||||
delay_ms(500);
|
||||
LED0=!LED0;
|
||||
}
|
||||
exfuns_init(); //为fatfs相关变量申请内存
|
||||
f_mount(fs[0],"0:",1); //挂载SD卡
|
||||
fatbuf=(u8*)mymalloc(SRAMEX,512); //为fatbuf申请内存
|
||||
_res_sd = exf_getfree("0:",&total,&free); //得到SD卡的总容量和剩余容量
|
||||
if(_res_sd)printf("SD Card Fatfs Error!");
|
||||
while(_res_sd)
|
||||
{
|
||||
delay_ms(100);
|
||||
LED0=!LED0;
|
||||
}
|
||||
|
||||
model_write("all");
|
||||
printf("初始化完成!\r\n");
|
||||
run_dataset();
|
||||
usmart_dev.init(90);
|
||||
SDRAM_USED();
|
||||
|
||||
while(1){
|
||||
if(isrun)cnn_run();
|
||||
Formatting_test(); //SD<53><44><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
|
||||
|
||||
model_write("all");
|
||||
|
||||
if( CSTX_4G_Init() )//<2F><><EFBFBD>豸<EFBFBD><E8B1B8>ʼ<EFBFBD><CABC>
|
||||
{
|
||||
CSTX_4G_RegALiYunIOT(0);//ע<>ᵽ<EFBFBD><E1B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************************************************/
|
||||
|
||||
while (1) {
|
||||
/* <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD> */
|
||||
key = KEY_Scan(0);
|
||||
switch (key){
|
||||
case KEY1_PRES:
|
||||
SPI_Read_SDRAM(); //<2F>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>SDRAM<41><4D> 32λ<32><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
break;
|
||||
case KEY2_PRES:
|
||||
SDRAM_TO_SD(); //<2F><>SDRAM<41><4D><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>SD<53><44> 32λ<32><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
break;
|
||||
case KEY3_PRES:
|
||||
test__(); //һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJɼ<C4B2><C9BC>ж<EFBFBD> <09><><EFBFBD><EFBFBD>+<2B><>SD
|
||||
break;
|
||||
case KEY4_PRES:
|
||||
CSTX_4G_RegALiYunIOT(1); //<2F><><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>ϱ<EFBFBD>
|
||||
CSTX_4G_ALiYunIOTSenddata_string("21367984",data_identifier); //<2F>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD>
|
||||
CSTX_4G_RegALiYunIOT(0); //<2F><><EFBFBD>ĵ<EFBFBD><C4B5>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>·<EFBFBD>
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD>
|
||||
if (USART3_RX_STA & 0X8000) {
|
||||
GPS_Analysis(&gpsx, USART3_RX_BUF); // <20><><EFBFBD><EFBFBD>GPS<50><53><EFBFBD><EFBFBD>
|
||||
if (gpsx.utc.hour > 24) {
|
||||
gpsx.utc.hour -= 24;
|
||||
gpsx.utc.date += 1;
|
||||
}
|
||||
USART3_RX_STA = 0; // <20><><EFBFBD>ý<EFBFBD><C3BD><EFBFBD>״̬
|
||||
memset(USART3_RX_BUF, 0, USART3_MAX_RECV_LEN); //<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD>
|
||||
//<2F><>ʾGPSʱ<53><CAB1>
|
||||
printf("year:%u\r\n",gpsx.utc.year);
|
||||
printf("month:%u\r\n",gpsx.utc.month);
|
||||
printf("date:%u\r\n",gpsx.utc.date);
|
||||
printf("hour:%u\r\n",gpsx.utc.hour);
|
||||
printf("min:%u\r\n",gpsx.utc.min);
|
||||
printf("sec:%u\r\n\r\n",gpsx.utc.sec);
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<C7B7><F1B5BDB4><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(CSTX_4G_RECData() == 1){
|
||||
while(1){
|
||||
if (USART3_RX_STA & 0X8000) {
|
||||
GPS_Analysis(&gpsx, USART3_RX_BUF); // <20><><EFBFBD><EFBFBD>GPS<50><53><EFBFBD><EFBFBD>
|
||||
if (gpsx.utc.hour > 24) {
|
||||
gpsx.utc.hour -= 24;
|
||||
gpsx.utc.date += 1;
|
||||
}
|
||||
USART3_RX_STA = 0; // <20><><EFBFBD>ý<EFBFBD><C3BD><EFBFBD>״̬
|
||||
memset(USART3_RX_BUF, 0, USART3_MAX_RECV_LEN); //<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD>
|
||||
}
|
||||
CSTX_4G_RECData();
|
||||
// <20><><EFBFBD>·<EFBFBD><C2B7><EFBFBD>ʱ<EFBFBD><CAB1>ʱ<EFBFBD><CAB1><EFBFBD>뱱<EFBFBD><EBB1B1><EFBFBD>·<EFBFBD><C2B7><EFBFBD>ʱ<EFBFBD><CAB1>һ<EFBFBD><D2BB> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD>
|
||||
if (month_def == gpsx.utc.month && date_def == gpsx.utc.date && hour_def == gpsx.utc.hour && min_def ==gpsx.utc.min && sec_def == gpsx.utc.sec ) {
|
||||
flag_spi = 1;
|
||||
while(flag_spi != 0) printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
HAL_NVIC_DisableIRQ(EXTI9_5_IRQn); // ʧ<><CAA7><EFBFBD>ж<EFBFBD>
|
||||
SPI_Read_SDRAM();
|
||||
SDRAM_TO_SD();
|
||||
HAL_NVIC_EnableIRQ(EXTI9_5_IRQn); // ʹ<><CAB9><EFBFBD>ж<EFBFBD>
|
||||
month_def = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************** <09><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD> *********************************************/
|
||||
|
||||
void FatFs_test(void)
|
||||
{
|
||||
float tempt;
|
||||
res = f_open(&file1,"test.bin",FA_CREATE_ALWAYS | FA_WRITE | FA_READ); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>ϵ<EFBFBD>Դ<EFBFBD>ļ<EFBFBD>
|
||||
if(res != RES_OK)
|
||||
{
|
||||
printf("f_open error!\r\n"); // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
while(1)
|
||||
{
|
||||
delay_ms(500);
|
||||
LED_R=!LED_R; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("f_open successful!\r\n");// <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
}
|
||||
printf("xierukaishi\r\n");
|
||||
for(int i=0;i<1300000;i++){
|
||||
tempt = i%100 + 0.0;
|
||||
res=f_write(&file1,&tempt,4,&fnum);
|
||||
}
|
||||
printf("xierujieshu\r\n");
|
||||
f_sync(&file1);
|
||||
res = f_lseek(&file1,0);
|
||||
if(res == FR_OK){
|
||||
for(int j=0;j<100000;j++){
|
||||
res = f_read(&file1, "FatFs_2.txt", 2, &fnum);
|
||||
}
|
||||
}
|
||||
else{
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD>ܡ<EFBFBD>\r\n");
|
||||
}
|
||||
f_close(&file1);
|
||||
f_mount(NULL,"0:",1);
|
||||
}
|
||||
|
||||
void SDRAM_test(void)
|
||||
{
|
||||
uint16_t i;
|
||||
uint16_t temp;
|
||||
printf("<EFBFBD><EFBFBD>ʼд<EFBFBD><EFBFBD>\r\n");
|
||||
for(i=0;i<13000;i++)
|
||||
{
|
||||
*(uint16_t*)(Bank5_SDRAM_ADDR+2*i)=i%1000;
|
||||
}
|
||||
printf("д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r\n");
|
||||
// <20><><EFBFBD>ζ<EFBFBD><CEB6><EFBFBD>֮ǰд<C7B0><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
|
||||
for(i=0;i<1024;i++)
|
||||
{
|
||||
temp=*(uint16_t*)(Bank5_SDRAM_ADDR+2*i);
|
||||
printf("<EFBFBD><EFBFBD>SDRAM<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>0x%x\r\n",temp);
|
||||
}
|
||||
}
|
||||
|
||||
void SDRAM_SD_test(void)
|
||||
{
|
||||
uint32_t i;
|
||||
uint16_t temp;
|
||||
Formatting_test();
|
||||
res = f_open(&file1,"FatFs.txt",FA_CREATE_ALWAYS | FA_WRITE | FA_READ); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>ϵ<EFBFBD>Դ<EFBFBD>ļ<EFBFBD>
|
||||
if(res == FR_OK){
|
||||
printf("<EFBFBD>ļ<EFBFBD><EFBFBD>ɹ<EFBFBD>\r\n");
|
||||
}
|
||||
else{
|
||||
printf("<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>\r\n");
|
||||
}
|
||||
printf("<EFBFBD><EFBFBD>ʼд<EFBFBD><EFBFBD>\r\n");
|
||||
for(i=0;i<13000;i++)
|
||||
{
|
||||
*(uint16_t*)(Bank5_SDRAM_ADDR+2*i)=i%1000;
|
||||
}
|
||||
for(i=0;i<13000;i++)
|
||||
{
|
||||
temp=*(uint16_t*)(Bank5_SDRAM_ADDR+2*i);
|
||||
|
||||
res=f_write(&file1,&temp,2,&fnum);
|
||||
}
|
||||
f_sync(&file1);
|
||||
res = f_lseek(&file1,0);
|
||||
if(res == FR_OK){
|
||||
uint16_t read_dat;
|
||||
for(short int j=0;j<1000;j++){
|
||||
res = f_read(&file1, &read_dat, 2, &fnum);
|
||||
printf("<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ɹ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݣ<EFBFBD>%d\r\n",read_dat);
|
||||
}
|
||||
}
|
||||
f_close(&file1);
|
||||
f_mount(NULL,"0:",1);
|
||||
}
|
||||
|
||||
void test__(void)
|
||||
{
|
||||
SPI_Read_SDRAM();
|
||||
cnn_run(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>10000<30><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>ڸú<DAB8><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4>ƶ<EFBFBD>
|
||||
}
|
||||
|
||||
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 */
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user