This commit is contained in:
Qiea
2024-12-19 14:06:05 +08:00
parent 1c0f3b676f
commit dcd484c1bd
58 changed files with 14859 additions and 863 deletions

View File

@@ -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 */
}