本帖最后由 海洋无限 于 2020-5-26 18:33 编辑
按照昨天的计划准备把几个实验整合到一起弄一个综合的例程,目前除了USB以外其他功能都基本实现了,这段时间工作比较忙,测评到这就先告一段落了,后面有时间再补上其他外设的测试
先来看看今天的测评结果:
1、按照计划目前整合了LED、Music和Photo部分,先来看个整体图,具体情况如下:
到这个界面后按Key3就会依次出现LED界面->Music界面->Photo界面->上图界面->LED界面->......循环,(USB界面未实现),每个界面如下:
2、LED界面
上面左图是刚切换到界面的状态,这时按下Key4,界面上的指示就会好真是LED状态一样循环亮起来(流水灯),图2和图3是效果图
3、Music界面
刚进入界面时如图一所示,按下Key4后,蜂鸣器鸣响,歌曲为蜂鸣器测评中的音乐,这时界面图标变为图2
4、Photo界面
进入Photo界面后,界面就会定时切换显示图片(头像太丑没敢放,网上随便找了几张,哈哈),算是简单的电子相册功能吧
下面将重要部分处理的code贴上来
switch(sLedHmiStatus.Page)
{
case HMI_PAGE0:
if(TRUE == sKey[KEY_3].ValidFlag){
sLedHmiStatus.Page = HMI_PAGE1;
DisPage(HMI_PAGE1);
}
break;
case HMI_PAGE1:
if(TRUE == sKey[KEY_3].ValidFlag){
sLedHmiStatus.Page = HMI_PAGE2;
DisPage(HMI_PAGE2);
}
break;
case HMI_PAGE2:
if(TRUE == sKey[KEY_3].ValidFlag){
sLedHmiStatus.Page = HMI_PAGE3;
DisPage(HMI_PAGE3);
DisLed(5);
}
else if(TRUE == sKey[KEY_4].ValidFlag)
{
if(FALSE == sLedHmiStatus.PageValid)
{
sLedBlinkStatus.LedRefresh = TRUE;//LED流水灯的处理在LED处理的流程中,sLedBlinkStatus.LedRefresh为标志
sLedHmiStatus.PageValid = TRUE;
}
else{
sLedBlinkStatus.LedRefresh = FALSE;
sLedHmiStatus.PageValid = FALSE;
}
}
break;
case HMI_PAGE3:
if(TRUE == sKey[KEY_3].ValidFlag){
sLedHmiStatus.Page = HMI_PAGE4;
DisPage(HMI_PAGE4);
}
else if(TRUE == sKey[KEY_4].ValidFlag)
{
sPlayMusic.PlayFlag = TRUE;//蜂鸣器鸣响,直到歌曲结束停止,
DisBuzzer(TRUE);
}
break;
case HMI_PAGE4:
if(TRUE == sKey[KEY_3].ValidFlag){
sLedHmiStatus.Page = HMI_PAGE1;
DisPage(HMI_PAGE1);
}
break;
default:
break;
}
code比较简单,这里就不啰嗦了,后面的测评估计要等段时间了,等这段时间忙完再试吧。
总结下:
1、整体来说MM32的开发板硬件做工不错,板卡有开源硬件的相关接口,板载的调试器确实省了不少事,赞
2、从目前的测评效果看,代码风格和STM很像,上手容易,芯片稳定性也不错,价格没了解,如果价格优势明显的话,在一些低端场合这个芯片还是很有竞争力的
3、官方提供的文档很清晰,分门别类,资料好找。上手很容易,例程中也有一些问题,自己在测试时需要认真检查下底层驱动代码配置
另外在多一句嘴,例程的代码中有延时函数,关于延时函数我想说一点,写code中,像ms级别的延时根本不应该出现在代码中,延时应该仅仅出现在某些时序部分中
如果真的需要大的延时,建议才用简单的定时器调度处理方式,当cpu负担比较重的时候,一旦有实时任务处理时,系统反应的效果要好很多
|