init
This commit is contained in:
@@ -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反转
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user