Browse Source

init

board_v2_hardtest
zhaohe 9 months ago
parent
commit
8eb61ef4ca
  1. 4
      .vscode/c_cpp_properties.json
  2. 5
      .vscode/settings.json
  3. 9
      USB_HOST/App/usb_host.c
  4. 2
      USB_HOST/Target/usbh_platform.c
  5. 6
      hand_acid_mainboard.ioc
  6. 288
      usrc/fileoperation/file_operate.c
  7. 27
      usrc/fileoperation/file_operate.h
  8. 91
      usrc/service/app_core.cpp

4
.vscode/c_cpp_properties.json

@ -12,6 +12,10 @@
"./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F",
"./Middlewares/ST/STM32_USB_Host_Library/Core/Inc/",
"USB_HOST/Target/",
"USB_HOST/App/",
"FATFS/App/",
"FATFS/Target/",
"Middlewares/Third_Party/FatFs/src/",
"Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Inc/",
"./Drivers/CMSIS/Device/ST/STM32F4xx/Include",
"./Drivers/CMSIS/Include",

5
.vscode/settings.json

@ -94,7 +94,10 @@
"usb_otg.h": "c",
"stm32f4xx_hal_hcd.h": "c",
"usb_host.h": "c",
"usbh_core.h": "c"
"usbh_core.h": "c",
"usbh_platform.h": "c",
"file_operate.h": "c",
"fatfs.h": "c"
},
"files.autoGuessEncoding": false,
"files.encoding": "gb2312"

9
USB_HOST/App/usb_host.c

@ -24,6 +24,8 @@
#include "usbh_core.h"
#include "usbh_msc.h"
#include "fileoperation/file_operate.h"
/* USER CODE BEGIN Includes */
/* USER CODE END Includes */
@ -98,17 +100,24 @@ static void USBH_UserProcess (USBH_HandleTypeDef *phost, uint8_t id)
switch(id)
{
case HOST_USER_SELECT_CONFIGURATION:
printf("+++++++++++++++++++++++++++++++++HOST_USER_SELECT_CONFIGURATION+++++++++++++++++++++++++++++\n");
break;
case HOST_USER_DISCONNECTION:
printf("+++++++++++++++++++++++++++++++++HOST_USER_DISCONNECTION+++++++++++++++++++++++++++++\n");
Appli_state = APPLICATION_DISCONNECT;
break;
case HOST_USER_CLASS_ACTIVE:
printf("+++++++++++++++++++++++++++++++++HOST_USER_CLASS_ACTIVE+++++++++++++++++++++++++++++\n");
Appli_state = APPLICATION_READY;
Mount_FatFs();
FatFs_GetDiskInfo();
FatFs_WriteTXTFile("test.txt",2016,11,15);
break;
case HOST_USER_CONNECTION:
printf("+++++++++++++++++++++++++++++++++HOST_USER_CONNECTION+++++++++++++++++++++++++++++\n");
Appli_state = APPLICATION_START;
break;

2
USB_HOST/Target/usbh_platform.c

@ -47,6 +47,6 @@ void MX_DriverVbusFS(uint8_t state)
data = GPIO_PIN_SET;
}
/* USER CODE END PREPARE_GPIO_DATA_VBUS_FS */
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_15,(GPIO_PinState)data);
// HAL_GPIO_WritePin(GPIOD,GPIO_PIN_3,(GPIO_PinState)data);
}

6
hand_acid_mainboard.ioc

@ -211,7 +211,7 @@ ProjectManager.ToolChainLocation=
ProjectManager.UAScriptAfterPath=
ProjectManager.UAScriptBeforePath=
ProjectManager.UnderRoot=true
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_TIM3_Init-TIM3-false-HAL-true,5-MX_CRC_Init-CRC-false-HAL-true,6-MX_RNG_Init-RNG-false-HAL-true,7-MX_TIM7_Init-TIM7-false-HAL-true,8-MX_TIM6_Init-TIM6-false-HAL-true,9-MX_TIM1_Init-TIM1-false-HAL-true,10-MX_USART3_UART_Init-USART3-false-HAL-true,11-MX_SPI1_Init-SPI1-false-HAL-true,12-MX_USART2_UART_Init-USART2-false-HAL-true,13-MX_IWDG_Init-IWDG-false-HAL-true,14-MX_RTC_Init-RTC-false-HAL-true,15-MX_USB_OTG_FS_HCD_Init-USB_OTG_FS-false-HAL-true
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_TIM3_Init-TIM3-false-HAL-true,5-MX_CRC_Init-CRC-false-HAL-true,6-MX_RNG_Init-RNG-false-HAL-true,7-MX_TIM7_Init-TIM7-false-HAL-true,8-MX_TIM6_Init-TIM6-false-HAL-true,9-MX_TIM1_Init-TIM1-false-HAL-true,10-MX_USART3_UART_Init-USART3-false-HAL-true,11-MX_SPI1_Init-SPI1-false-HAL-true,12-MX_USART2_UART_Init-USART2-false-HAL-true,13-MX_IWDG_Init-IWDG-false-HAL-true,14-MX_RTC_Init-RTC-false-HAL-true,15-MX_FATFS_Init-FATFS-false-HAL-false,16-MX_USB_HOST_Init-USB_HOST-false-HAL-false
RCC.48MHZClocksFreq_Value=48000000
RCC.AHBFreq_Value=144000000
RCC.APB1CLKDivider=RCC_HCLK_DIV4
@ -289,12 +289,12 @@ USB_HOST0.BSP.STBoard=false
USB_HOST0.BSP.api=Unknown
USB_HOST0.BSP.component=
USB_HOST0.BSP.condition=SW_VBUS_DRIVE_MSC_FS \= false
USB_HOST0.BSP.instance=PA15
USB_HOST0.BSP.instance=PD3
USB_HOST0.BSP.ip=GPIO
USB_HOST0.BSP.mode=Output
USB_HOST0.BSP.name=Drive_VBUS_FS
USB_HOST0.BSP.semaphore=
USB_HOST0.BSP.solution=PA15
USB_HOST0.BSP.solution=PD3
USB_OTG_FS.IPParameters=VirtualMode,phy_itface
USB_OTG_FS.VirtualMode=Host_Only
USB_OTG_FS.phy_itface=HCD_PHY_EMBEDDED

288
usrc/fileoperation/file_operate.c

@ -0,0 +1,288 @@
#include "file_operate.h"
//
BYTE workBuffer[4*User_Sector];
/*挂载FatFs文件系统*/
void Mount_FatFs(void)
{
//
FRESULT retUSER = f_mount(&User_FatFs, User_SDPath, 1);
//
if(retUSER != FR_OK)
{
//,
if(retUSER == FR_NO_FILESYSTEM)
{
printf("\r\n没有文件系统,开始格式化\r\n");
//
retUSER = f_mkfs(User_SDPath, FM_FAT32, 0, workBuffer, 4*User_Sector);
//
if(retUSER != FR_OK)
{
printf("格式化失败,错误代码 = %d\r\n", retUSER);
}
//
else
{
printf("格式化成功,开始重新挂载\r\n");
//
retUSER = f_mount(&User_FatFs, User_SDPath, 1);
//
if(retUSER != FR_OK)
{
printf("发生错误,错误代码 = %d\r\n", retUSER);
}
//
else
{
printf("*** 文件系统挂载成功 ***\r\n");
}
}
}
//,
else
{
printf("发生其他错误,错误代码 = %d\r\n", retUSER);
}
}
//
else
{
printf("文件系统挂载成功\r\n");
}
}
/*获取磁盘信息并在LCD上显示*/
void FatFs_GetDiskInfo(void)
{
FATFS *fs;
//
DWORD fre_clust;
//
FRESULT res = f_getfree("0:", &fre_clust, &fs);
//
if(res != FR_OK)
{
printf("f_getfree() error\r\n");
return;
}
printf("\r\n*** FAT disk info ***\r\n");
//
DWORD tot_sect = (fs->n_fatent - 2) * fs->csize;
// = *
DWORD fre_sect = fre_clust * fs->csize;
//SD卡和U盘, _MIN_SS=512
#if _MAX_SS == _MIN_SS
//SD卡的_MIN_SS固定为512,112048
//,:MB,SD卡,U盘
DWORD freespace= (fre_sect>>11);
//,:MB,SD卡,U盘
DWORD totalSpace= (tot_sect>>11);
#else
//Flash存储器,
//,:KB
DWORD freespace= (fre_sect*fs->ssize)>>10;
//,:KB
DWORD totalSpace= (tot_sect*fs->ssize)>>10;
#endif
//FAT类型
printf("FAT type = %d\r\n",fs->fs_type);
printf("[1=FAT12,2=FAT16,3=FAT32,4=exFAT]\r\n");
//,
printf("Sector size(bytes) = ");
//SD卡固定512字节
#if _MAX_SS == _MIN_SS
printf("%d\r\n", _MIN_SS);
#else
//FLASH存储器
printf("%d\r\n", fs->ssize);
#endif
printf("Cluster size(sectors) = %d\r\n", fs->csize);
printf("Total cluster count = %ld\r\n", fs->n_fatent-2);
printf("Total sector count = %ld\r\n", tot_sect);
//
#if _MAX_SS == _MIN_SS
printf("Total space(MB) = %ld\r\n", totalSpace);
#else
printf("Total space(KB) = %ld\r\n", totalSpace);
#endif
//
printf("Free cluster count = %ld\r\n",fre_clust);
//
printf("Free sector count = %ld\r\n", fre_sect);
//
#if _MAX_SS == _MIN_SS
printf("Free space(MB) = %ld\r\n", freespace);
#else
printf("Free space(KB) = %ld\r\n", freespace);
#endif
printf("Get FAT disk info OK\r\n");
}
/*创建文本文件*/
void FatFs_WriteTXTFile(TCHAR *filename,uint16_t year, uint8_t month, uint8_t day)
{
FIL file;
printf("\r\n*** Creating TXT file: %s ***\r\n", filename);
FRESULT res = f_open(&file, filename, FA_CREATE_ALWAYS | FA_WRITE);
///
if(res == FR_OK)
{
//"\n"
TCHAR str[]="Line1: Hello, FatFs***\n";
//"\0"
f_puts(str, &file);
printf("Write file OK: %s\r\n", filename);
}
else
{
printf("Open file error,error code: %d\r\n", res);
}
//使
f_close(&file);
}
/*读取一个文本文件的内容*/
void FatFs_ReadTXTFile(TCHAR *filename)
{
printf("\r\n*** Reading TXT file: %s ***\r\n", filename);
FIL file;
//
FRESULT res = f_open(&file, filename, FA_READ);
//
if(res == FR_OK)
{
//
TCHAR str[100];
//
while(!f_eof(&file))
{
//1,\0
f_gets(str,100, &file);
printf("%s", str);
}
printf("\r\n");
}
//
else if(res == FR_NO_FILE)
printf("File does not exist\r\n");
//
else
printf("f_open() error,error code: %d\r\n", res);
//
f_close(&file);
}
/*扫描和显示指定目录下的文件和目录*/
void FatFs_ScanDir(const TCHAR* PathName)
{
DIR dir; //
FILINFO fno; //
//
FRESULT res = f_opendir(&dir, PathName);
//
if(res != FR_OK)
{
//,退
f_closedir(&dir);
printf("\r\nf_opendir() error,error code: %d\r\n", res);
return;
}
printf("\r\n*** All entries in dir: %s ***\r\n", PathName);
//
while(1)
{
//
res = f_readdir(&dir, &fno);
//
if(res != FR_OK || fno.fname[0] == 0)
break;
//
if(fno.fattrib & AM_DIR)
{
printf("DIR: %s\r\n", fno.fname);
}
//
else
{
printf("FILE: %s\r\n",fno.fname);
}
}
//,
printf("Scan dir OK\r\n");
f_closedir(&dir);
}
/*获取一个文件的文件信息*/
void FatFs_GetFileInfo(TCHAR *filename)
{
printf("\r\n*** File info of: %s ***\r\n", filename);
FILINFO fno;
//
FRESULT fr = f_stat(filename, &fno);
//fno中读取文件信息
if(fr == FR_OK)
{
printf("File size(bytes) = %ld\r\n", fno.fsize);
printf("File attribute = 0x%x\r\n", fno.fattrib);
printf("File Name = %s\r\n", fno.fname);
///
FatFs_PrintfFileDate(fno.fdate, fno.ftime);
}
//
else if (fr == FR_NO_FILE)
printf("File does not exist\r\n");
//
else
printf("f_stat() error,error code: %d\r\n", fr);
}
/*删除文件*/
void FatFs_DeleteFile(TCHAR *filename)
{
printf("\r\n*** Delete File: %s ***\r\n", filename);
FIL file;
//
FRESULT res = f_open(&file, filename, FA_OPEN_EXISTING);
if(res == FR_OK)
{
//
f_close(&file);
printf("open successfully!\r\n");
}
//
res = f_unlink(filename);
//
if(res == FR_OK)
{
printf("The file was deleted successfully!\r\n");
}
//
else
{
printf("File deletion failed, error code:%d\r\n", res);
}
}
/*打印输出文件日期*/
void FatFs_PrintfFileDate(WORD date, WORD time)
{
printf("File data = %d/%d/%d\r\n", ((date>>9)&0x7F)+1980, (date>>5)&0xF, date&0x1F);
printf("File time = %d:%d:%d\r\n", (time>>11)&0x1F, (time>>5)&0x3F, time&0x1F);
}

27
usrc/fileoperation/file_operate.h

@ -0,0 +1,27 @@
#ifndef FILE_OPERATE_H
#define FILE_OPERATE_H
#include "main.h"
#include "FatFs.h"
#include "stdio.h"
/*定义自己的存储设备*/
/*用户存储设备扇区字节数*/
#define User_Sector 512
/*用户存储设备FatFs对象*/
#define User_FatFs USBHFatFS
/*用户存储设备卷路径*/
#define User_SDPath USBHPath
/*用户存储设备初始化类型*/
#define User_FatType FM_FAT32
/*函数声明*/
void Mount_FatFs(void);
void FatFs_GetDiskInfo(void);
void FatFs_ScanDir(const TCHAR* PathName);
void FatFs_ReadTXTFile(TCHAR *filename);
void FatFs_WriteTXTFile(TCHAR *filename,uint16_t year, uint8_t month, uint8_t day);
void FatFs_GetFileInfo(TCHAR *filename);
void FatFs_DeleteFile(TCHAR *filename);
void FatFs_PrintfFileDate(WORD date, WORD time);
#endif

91
usrc/service/app_core.cpp

@ -30,6 +30,8 @@ using namespace iflytop;
// #define TEST_BLE_IF
// #define TEST_EEPROM
// #define TEST_TJC_SCREEN
// #define TEST_RTC
// #define TEST_USB
static const char* zhex2str(uint8_t* data, size_t len) {
static char buf[256];
@ -43,7 +45,9 @@ static const char* zhex2str(uint8_t* data, size_t len) {
extern "C" {
void umain() { AppCore::ins()->initialize(); }
}
extern "C" {
extern void MX_USB_HOST_Init(void);
}
void AppCore::test() {
osDelay(1000);
/***********************************************************************************************************************
@ -176,6 +180,7 @@ void AppCore::test() {
#endif
#ifdef TEST_RTC
AppHal::rtc_init();
RTC_DateTypeDef GetData; // 获取日期结构体
RTC_TimeTypeDef GetTime; // 获取时间结构体
@ -195,89 +200,17 @@ void AppCore::test() {
osDelay(1000);
}
#endif
extern void MX_USB_HOST_Init(void);
#ifdef TEST_USB
ZGPIO USB_PWR;
USB_PWR.initAsOutput(PA15, kxs_gpio_nopull, false, true);
MX_USB_HOST_Init();
while (true) {
osDelay(1000);
}
// // 配置初始化
// ConfigService::ins()->initialize();
// if (!AppHardware::ins()->isHardInitOk()) {
// FrontEndControler::ins()->initialize(); // 前端控制器,对屏幕的消息进行解析,发送消息给屏幕
// FrontEndControler::ins()->startSchedule();
// FrontEndControler::ins()->alertNoConfirm("设备异常:\r\n 存储异常,请尝试重新上电");
// while (true) {
// osDelay(1);
// }
// }
// // hardInit
// AppHardware::ins()->initialize(); // 基础硬件初始化
// RemoteControlerUpper::ins()->initialize(); // 遥控器初始化
// FrontEndControler::ins()->initialize(); // 前端控制器,对屏幕的消息进行解析,发送消息给屏幕
// ValveStateSyncService::ins()->initialize(ZCAN1::ins());
// // BaseServiceInit
// PUMPCS->initialize();
// RemoteControlerStateSyncService::ins()->initialize();
// // Page
// Page_login::ins()->initialize(); //
// Page_main::ins()->initialize(); //
// Page_keybAcidCh::ins()->initialize();
// Page_muAcidType::ins()->initialize();
// Page_menu::ins()->initialize();
// Page_muInterval::ins()->initialize();
// Page_changePasswd::ins()->initialize();
// Page_muSettings::ins()->initialize();
// Page_muUsrMgr::ins()->initialize();
// Page_muDeviceInfo::ins()->initialize();
// // Page_muAudit::ins()->initialize();
// Page_muPumpTest::ins()->initialize();
// // EventProcesser
// Page_muPumpSett::ins()->initialize();
// Page_muBleHandSett::ins()->initialize();
// Page_muMotorSett::ins()->initialize();
// RemoteControlerEventProcesser::ins()->initialize();
// /***********************************************************************************************************************
// * REG_EVENT_HANDLER *
// ***********************************************************************************************************************/
// //
// /***********************************************************************************************************************
// * START *
// ***********************************************************************************************************************/
// FrontEndControler::ins()->startSchedule();
// RCTRL->startSchedule();
// RemoteControlerStateSyncService::ins()->startSync();
// ValveStateSyncService::ins()->startSync();
// // dim
// UIS->chpage(pg_login);
// osDelay(100);
// CfgItermCache bleNameCache;
// const char* bleName = CS->getStr(kcfg_bleClientName, &bleNameCache);
// if (strlen(bleName) != 0) {
// ZLOGI(TAG, "start scan :%s", bleName);
// for (size_t i = 0;; i++) {
// if (i != 0) ZLOGI(TAG, "re start scan %s %d", bleName, i);
// bool suc = RCTRL->startScan(bleName, true);
// if (suc) break;
// }
// } else {
// ZLOGI(TAG, "start scan %s", "XXXXXXXXX");
// for (size_t i = 0;; i++) {
// if (i != 0) ZLOGI(TAG, "re start scan %s %d", "XXXXXXXX", i);
// bool suc = RCTRL->startScan("XXXXXXXXX", false); // 输入一个错误的设备名,当作不扫描
// if (suc) break;
// }
// }
#endif
}
static ZThread ledthread;

Loading…
Cancel
Save