You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
372 lines
10 KiB
372 lines
10 KiB
2 years ago
|
#include "base.h"
|
||
|
|
||
|
uint8_t MyBuffer[4096] ={0};
|
||
|
|
||
|
// #define USE_USB_HS
|
||
|
extern osSemaphoreId_t elog_dma_lockHandle;
|
||
|
int _write(int fd, char *ch, int len)
|
||
|
{
|
||
|
if (osOK == osSemaphoreAcquire(elog_dma_lockHandle, osWaitForever))
|
||
|
{
|
||
|
// #ifdef LOG_MENU_485
|
||
|
// log_menu_send_enable();
|
||
|
// #endif
|
||
|
HAL_UART_Transmit_DMA(&huart1, (uint8_t *)ch, len);
|
||
|
}
|
||
|
return len;
|
||
|
}
|
||
|
|
||
|
uint8_t test_send_buf[8] = {0x01, 0x03, 0x00, 0x00, 0x00, 0x04, 0x44, 0x09};
|
||
|
uint8_t test_send_buf_2[6] = {0x01, 0x03, 0x00, 0x00, 0x00, 0x04};
|
||
|
uint8_t test_rcv_buf[14] = {0};
|
||
|
uint8_t test_rcv_buf_2[13] = {0};
|
||
|
|
||
|
|
||
|
void MY_INIT( )
|
||
|
{
|
||
|
// SDRAM_Init();
|
||
|
// HAL_Delay(100);
|
||
|
// SDRAM_Test();
|
||
|
}
|
||
|
|
||
|
static void Default_Task_Init()
|
||
|
{
|
||
|
|
||
|
log_i(" GCC Version -> %d ",__GNUC__);
|
||
|
// log_i(" GCC SDRAM_BANK_ADDR -> %d\n",SDRAM_BANK_ADDR);
|
||
|
// my_eeprom.init();
|
||
|
// // uint8_t a[2] = { 0xFF, 0xFF };
|
||
|
// // Eeprom_Transmit( eeprom, &a, 2 );
|
||
|
|
||
|
// // osDelay(5);
|
||
|
|
||
|
// // Eeprom_Begin_Rcv( eeprom, test_rcv_buf, 1);
|
||
|
// // osDelay(5);
|
||
|
|
||
|
// //初始化SDRAM模块
|
||
|
// extern MY_SDRAM_TypeDef my_sdram;
|
||
|
my_sdram.init();
|
||
|
// SDRAM_Init();
|
||
|
if (my_sdram.test(32)){
|
||
|
// if (SDRAM_Test(32)){
|
||
|
log_i( "SDRAM 32 Bytes Test OK ...");
|
||
|
}else{
|
||
|
log_i( "SDRAM 32 Bytes Test Faiure ...");
|
||
|
}
|
||
|
|
||
|
|
||
|
uint8_t *ex_buf;
|
||
|
ex_buf=mymalloc(SRAMEX,512); //申请一个扇区的缓存
|
||
|
if (ex_buf != NULL)
|
||
|
log_i("Malloc SRAMEX, Test ->>> PASS ! ...");
|
||
|
myfree(SRAMEX,ex_buf);
|
||
|
if (ex_buf == NULL)
|
||
|
log_i("Malloc Free OK ...");
|
||
|
|
||
|
my_nand.init();
|
||
|
while(FTL_Init()) //检测NAND FLASH,并初始化FTL
|
||
|
{
|
||
|
log_w("NAND Error!");
|
||
|
HAL_Delay(500);
|
||
|
log_w("Please Check");
|
||
|
HAL_Delay(500);
|
||
|
}
|
||
|
|
||
|
// my_nand.init();
|
||
|
log_i("NAND ID : %08X " , my_nand.id );
|
||
|
log_i("NAND Size : %dMB " , (my_nand.block_totalnum/1024)*(my_nand.page_mainsize/1024)*my_nand.block_pagenum); //显示NAND容量
|
||
|
log_i("NAND total Block Num: %d , page bytes %d , good block %d , valid sector Num: %d " ,
|
||
|
my_nand.block_totalnum , my_nand.page_mainsize, my_nand.good_blocknum,my_nand.valid_blocknum );
|
||
|
|
||
|
if(my_nand.id==MT29F16G08ABABA) //NAND为MT29F16G08ABABA
|
||
|
{
|
||
|
log_i("NAND Type : MT29F16G08ABABA 16GB" );
|
||
|
}
|
||
|
else if(my_nand.id==W29N01GVSIAA) //NAND为W29N01GVSIAA
|
||
|
{
|
||
|
log_i("NAND Type : W29N01GVSIAA 1GB" );
|
||
|
}else if (my_nand.id==W29N01HVSINA) //NAND为 W29N01HVSINA
|
||
|
{
|
||
|
log_i("NAND Type : W29N01HVSINA 512MB" );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
log_e("NAND Type : Error" );
|
||
|
}
|
||
|
// uint8_t *nand_sector0_buf;
|
||
|
// nand_sector0_buf = malloc(512);
|
||
|
// FTL_ReadSectors(nand_sector0_buf,2,NAND_ECC_SECTOR_SIZE,1);//预先读取扇区0到备份区域,防止乱写导致文件系统损坏.
|
||
|
|
||
|
spiflash_init();
|
||
|
log_i("SPI FLASH Type : %02X ", g_spiflash_type);
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
// UI_Port();
|
||
|
|
||
|
// 初始化触摸屏/
|
||
|
// GTP_Init_Panel();
|
||
|
|
||
|
// Disable_NAND_CS();
|
||
|
|
||
|
// // /* LCD 端口初始化 */
|
||
|
LCD_Init( );
|
||
|
log_i(" LTDC id %04X *** " , my_ltdc.id);
|
||
|
log_i(" Layer Addrr %08X %08X " , my_lcd.layeraddr[0],my_lcd.layeraddr[1]);
|
||
|
log_i(" Layer hsw vsw %d %d " , my_ltdc.hsw,my_ltdc.vsw);
|
||
|
|
||
|
DMA2D_Fill( (uint32_t) my_lcd.layeraddr[0], 480, 272, 0, DMA2D_ARGB8888, LCD_COLOR_ORANGE );
|
||
|
DMA2D_Fill( (uint32_t) my_lcd.layeraddr[1], 480, 272, 0, DMA2D_ARGB8888, LCD_COLOR_GREEN );
|
||
|
// // DMA2D_MemCopy(DMA2D_ARGB8888, my_lcd.layeraddr[1], my_lcd.layeraddr[0],
|
||
|
// // 480,272,0,0);
|
||
|
// LTDC_Select_Layer(0);
|
||
|
LCD_DrawLine(100,100,200,200);
|
||
|
// // LCD_Fill(100,100,300,250, LCD_COLOR_GREEN);
|
||
|
|
||
|
LCD_DisplayStringLine( 1, (uint8_t* )"LTDC TEST" );
|
||
|
LCD_DisplayStringLine_EN_CH( 2, (uint8_t* )"中");
|
||
|
|
||
|
|
||
|
// GTP_Init_Panel();
|
||
|
// log_i( "touch ic version %s", tp_dev.ic_version);
|
||
|
// DrawChar( 20, 20, &("LTDC TEST") );
|
||
|
// LCD_DisplayNumber( 2, 789,10 );
|
||
|
// LCD_DisplayNumber( 3, 666.99,10 );
|
||
|
|
||
|
|
||
|
|
||
|
// LCD_SetTransparency(0, 255);
|
||
|
|
||
|
// // LTDC_Clear(LCD_COLOR_GREEN);
|
||
|
// LTDC_FillBuffer(0, LCD_FB_START_ADDRESS, 480, 272, 0, LCD_COLOR_GREEN);
|
||
|
// LTDC_FillBuffer(1, LCD_FB_START_ADDRESS+(LCD_GetXSize()*LCD_GetYSize()*4), 480, 272, 0, LCD_COLOR_GREEN);
|
||
|
// LTDC_FillBuffer(uint32_t LayerIndex, void *pDst, uint32_t xSize, uint32_t ySize, uint32_t OffLine, uint32_t ColorIndex);
|
||
|
// // /* 选择LCD第一层 */
|
||
|
// LCD_SelectLayer(0);
|
||
|
|
||
|
// // /* 第一层清屏,显示全黑 */
|
||
|
// LCD_Clear(LCD_COLOR_BLACK);
|
||
|
|
||
|
// // /* 选择LCD第二层 */
|
||
|
// LCD_SelectLayer(1);
|
||
|
|
||
|
// // /* 第二层清屏,显示全黑 */
|
||
|
// LCD_Clear(LCD_COLOR_TRANSPARENT);
|
||
|
|
||
|
// // // /* 配置第一和第二层的透明度,最小值为0,最大值为255*/
|
||
|
// LCD_SetTransparency(0, 255);
|
||
|
// LCD_SetTransparency(1, 0);
|
||
|
// log_i("lcd set layer Clear... ok...... ");
|
||
|
|
||
|
// // /* 选择LCD第一层 */
|
||
|
// LCD_SelectLayer(0);
|
||
|
// // /* 清屏,显示全黑 */
|
||
|
// LCD_Clear(LCD_COLOR_GRAY);
|
||
|
// // /*设置字体颜色及字体的背景颜色(此处的背景不是指LCD的背景层!注意区分)*/
|
||
|
// LCD_SetColors(LCD_COLOR_WHITE,LCD_COLOR_BLACK);
|
||
|
// // /*选择字体*/
|
||
|
// LCD_SetFont(&LCD_DEFAULT_FONT);
|
||
|
|
||
|
|
||
|
// LCD_DisplayStringLine(1,(uint8_t* )"BH 5.0 inch LCD para: 正");
|
||
|
// LCD_DisplayStringLine(2,(uint8_t* )"Image resolution:800x480 px");
|
||
|
// LCD_DisplayStringLine(3,(uint8_t* )"Touch pad:5 point touch supported");
|
||
|
// LCD_DisplayStringLine(4,(uint8_t* )"Use STM32-LTDC directed driver,");
|
||
|
// LCD_DisplayStringLine(5,(uint8_t* )"no need extern driver,RGB888,24bits data bus");
|
||
|
// LCD_DisplayStringLine(6,(uint8_t* )"Touch pad use IIC to communicate");
|
||
|
|
||
|
// Palette_Init(); // 有中文字符,还得解决
|
||
|
|
||
|
|
||
|
// Enable_NAND_CS();
|
||
|
|
||
|
// my_led.init();
|
||
|
// my_led.port( 200);
|
||
|
|
||
|
// led_set_state(LED_SEQ_0, LED_STATE_FLICKER_SLOW);
|
||
|
// led_set_state(LED_COLOR_GREEN, LED_STATE_FLICKER_SLOW);
|
||
|
|
||
|
RTOS_Port();
|
||
|
osTimerStart( measureTimerHandle, 3000 );
|
||
|
|
||
|
// SD_Test();
|
||
|
// test_Port();
|
||
|
|
||
|
// MX_USB_DEVICE_Init();
|
||
|
|
||
|
}
|
||
|
void StartDefaultTask(void *argument)
|
||
|
{
|
||
|
|
||
|
// uart6_power_enable();
|
||
|
|
||
|
Init_Logger();
|
||
|
log_i(" *** System is initiating *** ");
|
||
|
|
||
|
Default_Task_Init();
|
||
|
|
||
|
// MX_USB_DEVICE_Init(); /* USB 初始化需要写在任务中 */
|
||
|
|
||
|
for (;;)
|
||
|
{
|
||
|
osDelay(1000 );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
void measureTimer_Callback(void *argument)
|
||
|
{
|
||
|
log_i("measureTimer ........................... ");
|
||
|
}
|
||
|
|
||
|
|
||
|
void measureTask(void *argument)
|
||
|
{
|
||
|
|
||
|
for (;;)
|
||
|
{
|
||
|
// log_i("measure task .... ");
|
||
|
osDelay(2000);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void USART1_IRQHandler(void)
|
||
|
{
|
||
|
if (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_TC) != RESET)
|
||
|
{
|
||
|
osSemaphoreRelease(elog_dma_lockHandle);
|
||
|
huart1.gState = HAL_UART_STATE_READY;
|
||
|
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_TC);
|
||
|
}
|
||
|
HAL_UART_IRQHandler(&huart1);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
|
||
|
{
|
||
|
|
||
|
// if (huart->Instance == huart3.Instance)
|
||
|
// {
|
||
|
// log_i("....huart3 rx callback.... " );
|
||
|
// // Oscar_Rcv_Cplt_Callback( oscar );
|
||
|
// // Viper_Rcv_Cplt_Callback( viper );
|
||
|
// // Sample_Rcv_Cplt_Callback( sample );
|
||
|
// __HAL_UART_CLEAR_FLAG(&huart3, UART_FLAG_RXNE);
|
||
|
// }
|
||
|
}
|
||
|
|
||
|
|
||
|
// void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
|
||
|
// {
|
||
|
|
||
|
// if (huart->Instance == huart3.Instance)
|
||
|
// {
|
||
|
// /* 拷贝数据 到菜单 */
|
||
|
// log_i("huart3 idle -> ****** HAL_UARTEx_RxEventCallback ");
|
||
|
// __HAL_UART_CLEAR_IDLEFLAG(&huart3);
|
||
|
// }
|
||
|
// }
|
||
|
|
||
|
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
|
||
|
{
|
||
|
|
||
|
|
||
|
// if (huart->Instance == huart3.Instance)
|
||
|
// {
|
||
|
// // max3160_485_receive_mode();
|
||
|
// // huart3.gState = HAL_UART_STATE_READY;
|
||
|
// __HAL_UART_CLEAR_FLAG(&huart3, UART_FLAG_TC);
|
||
|
// }
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
static void Hardware_Init(void)
|
||
|
{
|
||
|
/*中断优先级分组*/
|
||
|
/*硬件初始化1*/
|
||
|
/* ......*/
|
||
|
/*硬件初始化n*/
|
||
|
}
|
||
|
|
||
|
void Soft_Reboot()
|
||
|
{
|
||
|
__set_FAULTMASK(1);//关闭总中断
|
||
|
NVIC_SystemReset();//请求单片机重启
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
// FATFS fs; /* FatFs文件系统对象 */
|
||
|
// FIL fnew; /* 文件对象 */
|
||
|
// FRESULT res_flash; /* 文件操作结果 */
|
||
|
// UINT fnum; /* 文件成功读写数量 */
|
||
|
// BYTE ReadBuffer[1024]={0}; /* 读缓冲区 */
|
||
|
// BYTE WriteBuffer[] = "这是一个测试程序\r\n";
|
||
|
|
||
|
// // /* 挂载外部flash */
|
||
|
// res_flash = f_mount( &fs,"1:",1);
|
||
|
// // log_i(" mount res %08X \r\n",NAND_ReadID());
|
||
|
// log_i(" mount res %d \r\n", res_flash);
|
||
|
|
||
|
// // /* 如果没有文件系统就格式化创建创建文件系统 */
|
||
|
// if(res_flash == FR_NO_FILESYSTEM)
|
||
|
// {
|
||
|
// log_i("fmount no file system");
|
||
|
// /* 格式化 */
|
||
|
// res_flash=f_mkfs("1:",FM_ANY,0,MyBuffer,_MIN_SS); // FM_ANY 不能为0
|
||
|
// if(res_flash == FR_OK)
|
||
|
// {
|
||
|
// log_i(" mkfs format ok ! " );
|
||
|
// // 格式化后,先取消挂载 /
|
||
|
// res_flash = f_mount(NULL,"1:",1);
|
||
|
// // 重新挂载
|
||
|
// res_flash = f_mount(&fs,"1:",1);
|
||
|
// log_i("fmount OK.. %d", res_flash);
|
||
|
// }
|
||
|
// else
|
||
|
// {
|
||
|
// log_i(" format failure .... %d ",res_flash);
|
||
|
// }
|
||
|
// }
|
||
|
// else if(res_flash != FR_OK)
|
||
|
// {
|
||
|
// // 红灯常亮
|
||
|
// log_i("fmount failure");
|
||
|
// }
|
||
|
|
||
|
// /* 打开文件,如果没有文件就创建 */
|
||
|
// res_flash = f_open(&fnew, "1:FatFs.txt", FA_CREATE_ALWAYS | FA_WRITE );
|
||
|
// log_i(" f_open %d \r\n",res_flash);
|
||
|
// if ( res_flash == FR_OK )
|
||
|
// {
|
||
|
// /* 将指定存储区内容写入到文件内 */
|
||
|
// res_flash = f_write(&fnew,WriteBuffer,sizeof(WriteBuffer),&fnum);
|
||
|
// log_i(" f_write %d \r\n",res_flash);
|
||
|
// if(res_flash == FR_OK)
|
||
|
// {
|
||
|
// /* 蓝灯亮 */
|
||
|
// log_i("write file success ... ");
|
||
|
// }
|
||
|
// else
|
||
|
// {
|
||
|
// /* 不再读写,关闭文件 */
|
||
|
// f_close(&fnew);
|
||
|
// /* 红灯常亮 */
|
||
|
// log_i("write file failure");
|
||
|
// }
|
||
|
// /* 不再读写,关闭文件 */
|
||
|
// f_close(&fnew);
|
||
|
// }
|
||
|
// else
|
||
|
// {
|
||
|
// log_i("write file failure ..... ");
|
||
|
// }
|