打印
[MM32软件]

【MM32 eMiniBoard测评报告】+ 裸机多任务工程

[复制链接]
2255|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
BinWin|  楼主 | 2020-6-7 22:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 BinWin 于 2020-6-7 22:31 编辑

         首先感谢厂家和社区提供这样一个直接体验产品的平台和机会。希望如此大力的推广可以收到较好的效果,加深工程师对灵动的印象,未来更多的产品内蕴藏着灵动微电的中国芯。
         下面要看收到的物件了,整个板卡沉稳黑色,且期间布局比较美观整齐,接口靠近板边,看得出设计者考虑的还是比较细致的。另外板载MM-LINK调试器,含虚拟串口,对调试来说很是方便,一根USB线就解决了烧录和串口打印。加上厂商有编程的上位机软件,配套调试器堪称全家桶。EEPROM存储器,CAN控制器, FLASH存储器也都板载,可以进行SPI和I2C协议的调试,三个电位器接在ADC端口上。这些组成让板卡可以开箱即用,实现项目的初期调试。说了这么多,看下实物照片。
        
        同样给了黑色的背景
        展示完了硬件,来烧录个程序看看吧。利用定时器设计时间片任务轮询,添加按键检测,LED提示,蜂鸣器响应,停机模式触发,串口打印信息几个任务,通过这些代码的调试体验改MCU的开发难度和外设易用性,也可评估低功耗特性和稳定性。下面看主要代码。

#include "main.h"

#define TASKS_MAX 4

typedef struct _TASK_COMPONENTS
{
    uint16_t Run;                 
    uint16_t Timer;              
    uint16_t ItvTime;              
    void (*TaskHook)(void);   
} TASK_COMPONENTS;      


static void System_Task(void);
static void Uart_Process(void);
static void Key_Scan(void);
static void AdcTemp_Samp(void);

static TASK_COMPONENTS TaskComps[] =
{
        {0, 10, 10,         Key_Scan},
        {0, 200, 200,         Uart_Process},
        {0, 500, 500,         AdcTemp_Samp},
    {0, 1000, 1000, System_Task},
        
};

void TaskRemarks(void)
{
    uint16_t i;
    for (i=0; i<TASKS_MAX; i++)         
    {
         if (TaskComps[i].Timer)         
        {
            TaskComps[i].Timer--;         
            if (TaskComps[i].Timer == 0)      
            {
                 TaskComps[i].Timer = TaskComps[i].ItvTime;
                 TaskComps[i].Run = 1;           
            }
        }
   }
}

void TaskProcess(void)
{
    uint8_t i;
    for (i=0; i<TASKS_MAX; i++)      
    {
         if (TaskComps[i].Run)      
        {
             TaskComps[i].TaskHook();
             TaskComps[i].Run = 0;   
        }
    }  
}

static void System_Task(void){

        bsp_LedToggle(1);
}

static void Uart_Process(void){
        //printf("hello mm32\r\n");
        bsp_LedToggle(2);
}


static void Key_Scan(void){
        
        uint8_t ucKeyCode;
        
        bsp_KeyScan();
        ucKeyCode = bsp_GetKey();

        if(ucKeyCode != KEY_NONE)
        {
                switch (ucKeyCode)
                {
                        //stop mode ,turn off adc ,set gpio ain
                        case KEY_DOWN_K1:
                                printf("\ninto stop mode\r\n");
                                for(uint8_t i = 1; i < 5; i++){
                                        bsp_LedOff(i);
                                }
                                
                                HSI_SYSCLK();
                                Sys_Stop();
                                break;        
                                                
                        default: bsp_LedOff(4);                    
                                break;
                }
        }
}

static void AdcTemp_Samp(void){
        
        uint16_t adcVal;
        float Temp;
        
        adcVal = ADC1_SingleChannel_Get(ADC_Channel_10);
        Temp = 27.0 + (adcVal - 1800) / 5.96;
        printf("\ncpu temp is %.2fC\r\n",Temp);

}


int main(void)   
{
        Hal_Init();
        printf("\ninto normal mode\r\n");
        for(;;){
               
                TaskProcess();
        
        }
        
}


        板载按键K3按下后进入停机模式,这里没有做IO的配置和ADC的关闭操作。吐槽一下,这块板卡个人认为特色就是USB和低功耗。然而电路上没有可以方便测量工作电流的接口,或者有个电阻磁珠啥的可以挑开测测也行,但是看了原理图,没有。简单测了下整块的工作电流如图,这包括了调试器电路和板载其他期间的使用。
        
       上电任务开始运行后,进入停机模式之前,LED1以0.5hz闪烁,LED2以1hz闪烁,ADC任务采集核心温度,串口打印如下图,内心凉凉
        
       工程结构如下所示
      
       整个工程的建立和调试相对于其他厂商来说还是很便利的,而且库函数的很多寄存器与常用的MCU比较近似,所以寻求替换的朋友们可以尝试了。应该说成本敏感和地方,确切外设应用的地方,使用MM32是比较有优势的。从demo板的设计与资源来看,厂家的支持应该也不错的。整体体验暂如此,接下来的小项目中继续挖掘详细的内容。




使用特权

评论回复
沙发
Carina卡| | 2021-1-10 12:54 | 只看该作者
写的很不错,通过楼主分享的可以看出MM32的开发板不论是资源还是技术支持还是可以的

使用特权

评论回复
板凳
guijial511| | 2021-1-17 15:04 | 只看该作者
不错,学习了。

使用特权

评论回复
地板
liangshuang95| | 2021-1-19 18:42 | 只看该作者
学习了,感谢楼主分享。

使用特权

评论回复
5
fuqinyyy| | 2021-1-20 08:06 | 只看该作者
不错,学习了。

使用特权

评论回复
6
daichaodai| | 2021-1-20 18:34 | 只看该作者
感谢楼主分享经验

使用特权

评论回复
7
zhengshuai888| | 2021-1-21 08:18 | 只看该作者
学习了,谢谢分享。

使用特权

评论回复
8
yangxiaor520| | 2021-1-22 18:25 | 只看该作者
学习了,谢谢分享。

使用特权

评论回复
9
kkzz| | 2021-2-4 17:05 | 只看该作者
这个是什么系统呢   

使用特权

评论回复
10
hudi008| | 2021-2-4 17:06 | 只看该作者
学习一下 。     

使用特权

评论回复
11
lzmm| | 2021-2-4 17:07 | 只看该作者
单机与OS区别在哪  

使用特权

评论回复
12
minzisc| | 2021-2-4 17:07 | 只看该作者
            

使用特权

评论回复
13
mmbs| | 2021-2-4 17:07 | 只看该作者
能搜到一个类似的移植例子?  

使用特权

评论回复
14
fentianyou| | 2021-2-4 17:08 | 只看该作者
μC/OS资源   

使用特权

评论回复
15
xiaoyaodz| | 2021-2-4 17:08 | 只看该作者
想先把UC/OS-II移植到单片机上

使用特权

评论回复
16
febgxu| | 2021-2-4 17:08 | 只看该作者
裸机多任务?        

使用特权

评论回复
17
sdlls| | 2021-2-4 17:09 | 只看该作者
谢谢楼主的资料。        

使用特权

评论回复
18
pixhw| | 2021-2-4 17:09 | 只看该作者
            

使用特权

评论回复
19
mmbs| | 2021-2-4 17:09 | 只看该作者

学习了,谢谢分享。  

使用特权

评论回复
20
minzisc| | 2021-2-4 17:09 | 只看该作者
谢谢楼主分享的资料了。   

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

60

帖子

0

粉丝