智能生态系统自动化装置设计内容摘要:

ASK_PRIO 6 //设置任务堆栈大小 define MAIN_STK_SIZE 512 //任务堆栈, 8 字节对齐 __align(8) static OS_STK MAIN_TASK_STK[MAIN_STK_SIZE]。 //任务函数 void main_task(void *pdata)。 //串口监视任务 //设置任务优先级 define WATCH_TASK_PRIO 3 //设置任务堆栈大小 define WATCH_STK_SIZE 128 14 //任务堆栈, 8 字节对齐 __align(8) static OS_STK WATCH_TASK_STK[WATCH_STK_SIZE]。 //任务函数 void watch_task(void *pdata)。 //MP3 任务 //设置任务优先级 define MUSIC_PLAY_TASK_PRIO 2 //设置任务堆栈大小 define MUSIC_PLAY_STK_SIZE 256 //任务堆栈, 8 字节对齐 __align(8) static OS_STK MUSIC_PLAY_TASK_STK[MUSIC_PLAY_STK_SIZE]。 //任务函数 void music_play_task(void *pdata)。 ////////////////////////////////////////////////////////////////////////////// //外部内存测试 (最大支持 1M 字节内存测试 ) //返回值 :0,成功。 1,失败 . u8 system_exsram_test(u16 x,u16 y) { u32 i=0。 u16 temp=0。 u16 sval=0。 //在地址 0 读到的数据 LCD_ShowString(x,y,239,y+12,12,Ex Memory Test: 0KB)。 //每隔 1K 字节 ,写入一个数据 ,总共写入 1024 个数据 ,刚好是 1M 字节 for(i=0。 i1024*1024。 i+=1024) { FSMC_SRAM_WriteBuffer((u8*)amp。 temp,i,2)。 temp++。 } //依次读出之前写入的数据 ,进行校验 for(i=0。 i1024*1024。 i+=1024) { FSMC_SRAM_ReadBuffer((u8*)amp。 temp,i,2)。 if(i==0)sval=temp。 else if(temp=sval)break。 //后面读出的数据一定要比第一次读到的数据大 . LCD_ShowxNum(x+15*6,y,(u16)(tempsval+1),4,12,0)。 //显示内存容量 } if(i=1024*1024) { LCD_ShowxNum(x+15*6,y,i/1024,4,12,0)。 //显示内存值 return 0。 //内存正常 ,成功 } return 1。 //失败 } 15 //显示错误信息 //x,y:坐标 .err:错误信息 void system_error_show(u16 x,u16 y,u8*err) { POINT_COLOR=RED。 while(1) { LCD_ShowString(x,y,240,320,12,err)。 delay_ms(400)。 LCD_Fill(x,y,240,y+18,BLACK)。 delay_ms(100)。 LED0=!LED0。 } } //系统初始化 void system_init(void) { const u8 okoffset=162。 u16 ypos=0。 u16 j=0。 u16 temp=0。 u8 res。 u32 dtsize,dfsize。 u8 *stastr=0。 u8 *version=0。 u8 verbuf[12]。 NVIC_Configuration()。 delay_init(72)。 //延时初始化 uart_init(9600)。 //串口 1 初始化 LCD_Init()。 //LCD 初始化 LCD_PWM_Init()。 //初始化 LCD 背光亮度 LCD_BLPWM_VAL=200。 //设置为最亮 LED_Init()。 //LED 初始化 KEY_Init()。 //按键初始化 FSMC_SRAM_Init()。 //初始化 SRAM gui_init()。 Adc_Init()。 //ADC 初 始化 ,内部温度传感器 BEEP_Init()。 AT24CXX_Init()。 Audiosel_Init()。 Audiosel_Set(0)。 (72)。 mem_init(SRAMIN)。 //内部内存池初始化 version=mymalloc(SRAMIN,31)。 //申请 31 个字节内存 16 LCD_Clear(BLACK)。 //黑屏 POINT_COLOR=WHITE。 BACK_COLOR=BLACK。 j=0。 ///////////////////////////////////////////////////////////////////////// //显示版权信息 ypos=2。 app_show_mono_icos(5,ypos,18,24,(u8*)APP_ALIENTEK_ICO,YELLOW,BLACK)。 LCD_ShowString(28,ypos+12*j++,240,320,12, Intelligent Ecosystem)。 //智能生态系统 LCD_ShowString(28,ypos+12*j++,240,320,12,CIEE of JiLin University)。 LCD_ShowString(28,ypos+12*j++,240,320,12,Created by Our Team)。 sprintf((char*)verbuf,LCD ID:%04X,)。 //LCD ID 打印到 verbuf 里面 LCD_ShowString(5,ypos+12*j++,240,320,12, verbuf)。 //显示 LCD ID ////////////////////////////////////////////////////////////////////////// //开始硬件检测初始化 LCD_ShowString(5,ypos+12*j++,240,320,12, CPU:STM32F103ZET6 72Mhz)。 LCD_ShowString(5,ypos+12*j++,240,320,12, FLASH:512KB SRAM:64KB)。 if(system_exsram_test(5,ypos+12*j))system_error_show(5,ypos+12*j++,EX Memory Error!)。 LCD_ShowString(5+okoffset,ypos+12*j++,240,320,12,OK)。 mem_init(SRAMEX)。 //外部内存池的初始化必须放到内存检测之后。 SPI_Flash_Init()。 //W25Qxx 初始化 switch(SPI_FLASH_TYPE) { case W25Q80: temp=1*1024。 break。 case W25Q16: temp=2*1024。 break。 case W25Q32: temp=4*1024。 break。 case W25Q64: temp=8*1024。 break。 default : system_error_show(5,ypos+12*j++,Ex Flash Error!!)。 break。 } LCD_ShowString(5,ypos+12*j,240,320,12, Ex Flash: KB)。 LCD_ShowxNum(5+9*6,ypos+12*j,temp,4,12,0)。 //显示 flash 大小 LCD_ShowString(5+okoffset,ypos+12*j++,240,320,12, OK)。 17 LCD_ShowString(5,ypos+12*j,240,320,12, FATFS Check...)。 //FATFS 检测 if(exfuns_init())system_error_show(5,ypos+12*(j+1),FATFS Memory Error!)。 //内存分配 f_mount(0,fs[0])。 //挂载 SD 卡 f_mount(1,fs[1])。 //挂载 FLASH. LCD_ShowString(5+okoffset,ypos+12*j++,240,320,12, OK)。 //SD 卡检测 LCD_ShowString(5,ypos+12*j,240,320,12, SD Card: MB)。 //FATFS 检测 temp=0。 do { temp++。 res=exf_getfree(0:,amp。 dtsize,amp。 dfsize)。 //得到 SD 卡剩余容量和总容量 delay_ms(200)。 }while(resamp。 amp。 temp5)。 //连续检测 5 次 if(res==0)//得到容量正常 { temp=dtsize10。 //单位转换为 MB stastr=OK。 }else { temp=0。 //出错了 ,单位为 0 stastr=ERROR。 } LCD_ShowxNum(5+8*6,ypos+12*j,temp,5,12,0)。 //显示 SD 卡容量大小 LCD_ShowString(5+okoffset,ypos+12*j++,240,320,12,stastr)。 //SD 卡状态 //W25Q64 检测 ,如果不存在文件系统 ,则先创建 . temp=0。 do { temp++。 res=exf_getfree(1:,amp。 dtsize,amp。 dfsize)。 //得到 FLASH 剩余容量和总容量 delay_ms(200)。 }while(resamp。 amp。 temp20)。 //连续检测 20 次 if(res==0X0D)/。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。