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

@@ -30,76 +30,76 @@ void SDRAM_USED(){
u8 paddr[20];
memused=my_mem_perused(SRAMEX);
sprintf((char*)paddr,"%d.%01d%%",memused/10,memused%10);
printf("SDRAMʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>%s\r\n",paddr);
printf("SDRAM使用量为:%s\r\n",paddr);
}
void scan_files(u8 * path)
{
FRESULT res;
res = f_opendir(&dir,(const TCHAR*)path); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ŀ¼
res = f_opendir(&dir,(const TCHAR*)path); //打开一个目录
if (res == FR_OK)
{
printf("\r\n");
while(1)
{
res = f_readdir(&dir, &fileinfo); //<EFBFBD><EFBFBD>ȡĿ¼<EFBFBD>µ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
if (res != FR_OK || fileinfo.fname[0] == 0) break; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><>ĩβ<C4A9><CEB2>,<2C>˳<EFBFBD>
//if (fileinfo.fname[0] == '.') continue; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD>Ŀ¼
printf("%s/", path);//<EFBFBD><EFBFBD>ӡ·<EFBFBD><EFBFBD>
printf("%s\r\n",fileinfo.fname);//<EFBFBD><EFBFBD>ӡ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
res = f_readdir(&dir, &fileinfo); //读取目录下的一个文件
if (res != FR_OK || fileinfo.fname[0] == 0) break; //错误了/到末尾了,退出
//if (fileinfo.fname[0] == '.') continue; //忽略上级目录
printf("%s/", path);//打印路径
printf("%s\r\n",fileinfo.fname);//打印文件名
}
}
}
TIM_HandleTypeDef TIM3_Handler; //<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TIM_HandleTypeDef TIM3_Handler; //定时器句柄
//ͨ<EFBFBD>ö<EFBFBD>ʱ<EFBFBD><EFBFBD>3<EFBFBD>жϳ<EFBFBD>ʼ<EFBFBD><EFBFBD>
//arr<EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>װֵ<EFBFBD><EFBFBD>
//psc<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>
//<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:Tout=((arr+1)*(psc+1))/Ft us.
//Ft=<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>,<2C><>λ:Mhz
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><EFBFBD>Ƕ<EFBFBD>ʱ<EFBFBD><EFBFBD>3!(<28><>ʱ<EFBFBD><CAB1>3<EFBFBD><33><EFBFBD><EFBFBD>APB1<42>ϣ<EFBFBD>ʱ<EFBFBD><CAB1>ΪHCLK/2)
//通用定时器3中断初始化
//arr:自动重装值。
//psc:时钟预分频数
//定时器溢出时间计算方法:Tout=((arr+1)*(psc+1))/Ft us.
//Ft=定时器工作频率,单位:Mhz
//这里使用的是定时器3!(定时器3挂在APB1上时钟为HCLK/2)
void TIM3_Init(u16 arr,u16 psc)
{
TIM3_Handler.Instance=TIM3; //ͨ<EFBFBD>ö<EFBFBD>ʱ<EFBFBD><EFBFBD>3
TIM3_Handler.Init.Prescaler=psc; //<EFBFBD><EFBFBD>Ƶϵ<EFBFBD><EFBFBD>
TIM3_Handler.Init.CounterMode=TIM_COUNTERMODE_UP; //<EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TIM3_Handler.Init.Period=arr; //<EFBFBD>Զ<EFBFBD>װ<EFBFBD><EFBFBD>ֵ
TIM3_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;//ʱ<EFBFBD>ӷ<EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TIM3_Handler.Instance=TIM3; //通用定时器3
TIM3_Handler.Init.Prescaler=psc; //分频系数
TIM3_Handler.Init.CounterMode=TIM_COUNTERMODE_UP; //向上计数器
TIM3_Handler.Init.Period=arr; //自动装载值
TIM3_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;//时钟分频因子
HAL_TIM_Base_Init(&TIM3_Handler);
HAL_TIM_Base_Start_IT(&TIM3_Handler); //ʹ<EFBFBD>ܶ<EFBFBD>ʱ<EFBFBD><EFBFBD>3<EFBFBD>Ͷ<EFBFBD>ʱ<EFBFBD><EFBFBD>3<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϣ<EFBFBD>TIM_IT_UPDATE
HAL_TIM_Base_Start_IT(&TIM3_Handler); //使能定时器3和定时器3更新中断TIM_IT_UPDATE
}
//<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
//<EFBFBD>˺<EFBFBD><EFBFBD><EFBFBD><EFBFBD>HAL_TIM_Base_Init()<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//定时器底册驱动,开启时钟,设置中断优先级
//此函数会被HAL_TIM_Base_Init()函数调用
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)
{
if(htim->Instance==TIM3)
{
__HAL_RCC_TIM3_CLK_ENABLE(); //ʹ<EFBFBD><EFBFBD>TIM3ʱ<EFBFBD><EFBFBD>
HAL_NVIC_SetPriority(TIM3_IRQn,1,3); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>3
HAL_NVIC_EnableIRQ(TIM3_IRQn); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ITM3<EFBFBD>ж<EFBFBD>
__HAL_RCC_TIM3_CLK_ENABLE(); //使能TIM3时钟
HAL_NVIC_SetPriority(TIM3_IRQn,1,3); //设置中断优先级抢占优先级1子优先级3
HAL_NVIC_EnableIRQ(TIM3_IRQn); //开启ITM3中断
}
}
//<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>3<EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//定时器3中断服务函数
void TIM3_IRQHandler(void)
{
HAL_TIM_IRQHandler(&TIM3_Handler);
}
//<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//回调函数,定时器中断服务函数调用
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim==(&TIM3_Handler))
{
LED_R=!LED_R; //LED1<EFBFBD><EFBFBD>ת
LED_R=!LED_R; //LED1反转
}
}