Files
stm32-cnn/USER/main.c
2024-11-01 22:41:26 +08:00

133 lines
3.4 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "key.h"
#include "lcd.h"
#include "string.h"
#include "sdram.h"
#include "malloc.h"
#include "w25qxx.h"
#include "ff.h"
#include "exfuns.h"
#include "string.h"
#include "usmart.h"
#include "sdio_sdcard.h"
#include "ftl.h"
#include "my.h"
#include "debug.h"
#include "cnn.h"
/************************************************
ALIENTEK 阿波罗STM32F429开发板实验41
FATFS实验-HAL库函数版
技术支持www.openedv.com
淘宝店铺http://eboard.taobao.com
关注微信公众平台微信号:"正点原子"免费获取STM32资料。
广州市星翼电子科技有限公司
作者:正点原子 @ALIENTEK
************************************************/
int main(void)
{
u32 total,free;
u8 key;
HAL_Init(); //初始化HAL库
Stm32_Clock_Init(360,25,2,8); //设置时钟,180Mhz
delay_init(180); //初始化延时函数
uart_init(9600); //初始化USART
LED_Init(); //初始化LED
KEY_Init(); //初始化按键
SDRAM_Init(); //SDRAM初始化
LCD_Init(); //LCD初始化
my_mem_init(SRAMEX); //初始化外部内存池
model_init(); //模型参数初始化
TIM3_Init(5000-1,9000-1); //定时器3初始化定时器时钟为90M分频系数为9000-1
//////////////////////////////调试工具usmart的初始化/////////////////////////////////
usmart_dev.init(90);
/////////////////////////////////////////////////////////////////////////////////////
POINT_COLOR=RED;
LCD_ShowString(30,50,200,16,16,"Apollo STM32F4/F7");
while(SD_Init())//检测不到SD卡
{
LCD_ShowString(30,150,200,16,16,"SD Card Error!");
delay_ms(500);
LCD_ShowString(30,150,200,16,16,"Please Check! ");
delay_ms(500);
LED0=!LED0;//DS0闪烁
}
FTL_Init();
exfuns_init(); //为fatfs相关变量申请内存
f_mount(fs[0],"0:",1); //挂载SD卡
fatbuf=(u8*)mymalloc(SRAMEX,512); //为fatbuf申请内存
LCD_Fill(30,150,240,150+16,WHITE); //清除显示
while(exf_getfree("0:",&total,&free)) //得到SD卡的总容量和剩余容量
{
LCD_ShowString(30,150,200,16,16,"SD Card Fatfs Error!");
delay_ms(200);
LCD_Fill(30,150,240,150+16,WHITE); //清除显示
delay_ms(200);
LED0=!LED0;//DS0闪烁
}
POINT_COLOR=BLUE;//设置字体为蓝色
LCD_ShowString(30,150,200,16,16,"FATFS OK!");
LCD_ShowString(30,170,200,16,16,"SD Total Size: MB");
LCD_ShowString(30,190,200,16,16,"SD Free Size: MB");
LCD_ShowNum(30+8*14,170,total>>10,5,16); //显示SD卡总容量 MB
LCD_ShowNum(30+8*14,190,free>>10,5,16); //显示SD卡剩余容量 MB
model_write("all");
printf("初始化完成!\r\n");
char* modelusearr[] = {
"filtered_C1autosave00108_right_new",
"filtered_C1autosave00004_right_new",
"filtered_C1autosave00039_right_new",
"filtered_C1autosave00062_right_new",
};
for(int a=0;a<(sizeof(modelusearr) / sizeof(modelusearr[0]));a++){
SDRAM_USED();
model_switchdata(modelusearr[a]);
cnn_run();
}
printf("\r\n运行完成\r\n");
while(1){
if(isrun)cnn_run();
key=KEY_Scan(0);//不支持连按
switch(key){
case 0://没有按键按下
break;
case KEY0_PRES: //KEY0按下
isrun = 1;
break;
case KEY1_PRES: //KEY1按下
model_dataset();
break;
case KEY2_PRES: //KEY1按下
model_switchdata("C1autosave00095_right_new_2");
break;
case WKUP_PRES: //KEY1按下
model_switchdata("data");
break;
}
delay_ms(10);
}
}