感芯多线程处理器MC3172评估板(三)- 体验多线程同步并行

感芯多线程处理器MC3172评估板(一)- 介绍与搭建开发环境 感芯多线程处理器MC3172评估板(二)- 点亮一个LED灯

目录

前言

一、通用输入输出接口(GPIO)

二、相关函数

三、主程序代码

 四、硬件电路

 五、下载程序

 六、实验现象

总结


前言

        上一篇文章里介绍了MC3172评估板点亮LED的内容,这一篇将通过编程实现两个IO口来感受多线程同步并行运行的效果。


一、通用输入输出接口(GPIO)

        本章节的使用的还是通用输入输出接口(GPIO),详细内容可看上一章节。相关宏定义也同理。

二、相关函数

本次为了使代码简洁,将对IO口初始化和翻转封装为一个函数,方便在线程中调用。代码如下:

void LED_GPIOx_PINx_TEST(u32 gpio_sel,u32 gpio_pin,u8 level)
{
    // 启动GPIOx并设置特权组及时钟频率
    //(对应的外设|线程组别|外设时钟分频设置)
    INTDEV_SET_CLK_RST(gpio_sel,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV2));
    // 使能GPIOx PINx引脚
    GPIO_SET_OUTPUT_EN_VALUE(gpio_sel, gpio_pin, GPIO_SET_ENABLE);
    switch(level)
    {
        case 0:GPIO_SET_OUTPUT_PIN_TO_0(gpio_sel, gpio_pin);break;// GPIOx PINx输出0
        case 1:GPIO_SET_OUTPUT_PIN_TO_1(gpio_sel, gpio_pin);break;// GPIOx PINx输出1
    }
    while(1)
    {
         for(u16 i=0;i<10;i++)
         {
            for (u32 var = 0; var < 65535; ++var)
            {
                NOP();
            }
         }
         //输出翻转
         GPIO_SET_OUTPUT_PIN_INV(gpio_sel, gpio_pin);
    }
}

        这个函数是使能某个引脚并输出电平翻转,可实现LED闪烁的功能。

        (1)gpio_sel:任意一组GPIO,可以为GPIOA_BASE_ADDR、GPIOB_BASE_ADDR、GPIOC_BASE_ADDR、GPIOD_BASE_ADDR。

        (2)gpio_pin:任一引脚。

        (3)level:默认引脚的初始电平,0为低电平,1为高电平。

三、主程序代码

        在main.c文件中的void thread0_main(void)里编写代码程序如下:

void thread0_main(void)
{
    while(1){
        LED_GPIOx_PINx_TEST(GPIOC_BASE_ADDR,GPIO_PIN0,0);
    }
    thread_end();
}



void thread1_main(void)
{
    while(1){
        LED_GPIOx_PINx_TEST(GPIOC_BASE_ADDR,GPIO_PIN1,0);
    }
    thread_end();
}

 四、硬件电路

1.MC3172引脚图

 五、下载程序

        将MC3172评估板通过USB口接到电脑,然后打开Release文件夹下的开发板程序下载_v1.1.exe,这时就会识别出GX_LINK#0设备(也有可能是其它名字),点击连接设备,接着选择生成的*.hex固件,再点击烧录固件,最后等到进度条走到100%则下载成功。

 六、实验现象

        烧录程序,使用逻辑分析仪抓取GPIOC_PIN0及GPIOC_PIN1引脚电平变化如下:

        可见,这两个波形是完全同步的,CPU同时在干两件事情,实现了与RTOS多线程同样的效果。


总结

        以上就是通过IO口的输出体验多线程同时并行运行的学习过程记录分享,如果觉得文章有帮助,麻烦帮忙转发,谢谢!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值