原创 【MC3172】从freertos到并行处理器的成长

2022-10-26 10:48 2029 11 11 分类: MCU/ 嵌入式 文集: 评测
从今年暑假开始,接触到了freertos的操作系统,打开了多线程世界的大门,正好又碰上了感芯科技这款并行处理器,可以将两者进行对比
这是一款小巧而精致的最小系统板,板子上集成了两路稳压(3.3V,1.8V),48M高速晶振和ch553g芯片,满足芯片的下载,供电以及时钟电路(如果能够在集成一个复位按键和一个电源指示灯就更好了)
1.环境搭建
MC3172使用国产MounRiver Studio 作为开发工具,从地址:http://www.mounriver.com/download 可以下载。
官方还提供了线程配置器,程序烧录器以及配套的模板历程,可以直接导入进编译器。这些资料从地址:http://www.gxchip.cn/down/show-70.html 可以下载。
导入程序后的效果如图1-1所示:
图1-1 导入工程
通过线程配置器完成线程的配置如图1-2所示:
图1-2 完成线程的配置
修改线程内容如图1-3所示:
图1-3修改线程内容
完成编译通过下载烧录工具进行烧录如图1-4所示:
图1-4 烧录工具
2.程序编写测试
本文主要针对该芯片的GPIO,UART和线程之间的切换进行测试
我在线程0中接受串口传回的值,并解析成二进制,点亮或熄灭对应的led灯;在线程1中接收串口的值,并打印出去;在线程3和线程4中同时翻转led,来测试每个线程执行的顺序
int bss_value1;
  • u16 rx_data;
  • void delay(u32 time)
  • {
  • for (u32 var = 0; var < time; ++var)
  • {
  • NOP();
  • }
  • }
  • void gpio_read_val(u32 gpio_sel)
  • {
  • INTDEV_SET_CLK_RST(gpio_sel,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV2));
  • // GPIO_SET_INPUT_EN_VALUE(gpio_sel,(GPIO_PIN8|GPIO_PIN9|GPIO_PIN10|GPIO_PIN11),GPIO_SET_ENABLE);
  • GPIO_SET_OUTPUT_EN_VALUE(gpio_sel,(GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3),GPIO_SET_ENABLE);
  • /*< 完成io初始化 */
  • GPIO_SET_OUTPUT_PIN_VALUE(gpio_sel,(GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3),(bss_value1));
  • for (u32 var = 0; var < 5000; ++var);
  • }
  • ////////////////////////////////////////////////////////////
  • void thread_end(void)
  • {
  • while(1);
  • }
  • ////////////////////////////////////////////////////////////
  • void thread0_main(void)
  • {
  • while(1){
  • gpio_read_val(GPIOA_BASE_ADDR);
  • }
  • thread_end();
  • }
  • ////////////////////////////////////////////////////////////
  • void thread1_main(void)
  • {
  • INTDEV_SET_CLK_RST(GPCOM8_BASE_ADDR,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV4));
  • GPCOM_SET_IN_PORT(GPCOM8_BASE_ADDR,(GPCOM_RXD_IS_P2)); //设置p2为rxd
  • GPCOM_SET_OUT_PORT(GPCOM8_BASE_ADDR,( \
  • GPCOM_P0_OUTPUT_DISABLE|GPCOM_P3_OUTPUT_ENABLE|GPCOM_P2_OUTPUT_DISABLE|GPCOM_P1_OUTPUT_DISABLE| \
  • GPCOM_P0_IS_HIGH |GPCOM_P3_IS_TXD |GPCOM_P2_IS_HIGH |GPCOM_P1_IS_HIGH \
  • ));
  • GPCOM_SET_COM_MODE(GPCOM8_BASE_ADDR,GPCOM_UART_MODE); //设置模式为串口模式
  • GPCOM_SET_COM_SPEED(GPCOM8_BASE_ADDR,12000000,115200); //设置波特率
  • GPCOM_SET_OVERRIDE_GPIO(GPCOM8_BASE_ADDR, ( \
  • GPCOM_P2_OVERRIDE_GPIO|GPCOM_P2_INPUT_ENABLE | \
  • GPCOM_P3_OVERRIDE_GPIO \
  • )); //
  • u8 rx_data_rp=0;
  • rx_data_rp=GPCOM_GET_RX_WP(GPCOM8_BASE_ADDR);
  • GPCOM_PUSH_TX_DATA(GPCOM8_BASE_ADDR,rx_data_rp);
  • while(1){
  • // user code section
  • if(rx_data_rp!=(GPCOM_GET_RX_WP(GPCOM8_BASE_ADDR)))
  • {
  • bss_value1=GPCOM_GET_RX_DATA(GPCOM8_BASE_ADDR,rx_data_rp);
  • GPCOM_PUSH_TX_DATA(GPCOM8_BASE_ADDR,bss_value1);
  • rx_data_rp++;
  • rx_data_rp &= 0x0f;
  • }
  • }
  • thread_end();
  • }
  • ////////////////////////////////////////////////////////////
  • void thread2_main(void)
  • {
  • INTDEV_SET_CLK_RST(GPIOA_BASE_ADDR,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV2));
  • GPIO_SET_OUTPUT_EN_VALUE(GPIOA_BASE_ADDR,(GPIO_PIN4),GPIO_SET_ENABLE);
  • while(1){
  • //TIMER_COMPARER_EXAMPLE(TIMER2_BASE_ADDR);
  • //user code section
  • GPIO_SET_OUTPUT_PIN_INV(GPIOA_BASE_ADDR,(GPIO_PIN4));
  • delay(5);
  • }
  • thread_end();
  • }
  • ////////////////////////////////////////////////////////////
  • void thread3_main(void)
  • {
  • INTDEV_SET_CLK_RST(GPIOA_BASE_ADDR,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV2));
  • GPIO_SET_OUTPUT_EN_VALUE(GPIOA_BASE_ADDR,(GPIO_PIN6),GPIO_SET_ENABLE);
  • while(1){
  • //TIMER_COMPARER_EXAMPLE(TIMER2_BASE_ADDR);
  • //user code section
  • GPIO_SET_OUTPUT_PIN_INV(GPIOA_BASE_ADDR,(GPIO_PIN6));
  • delay(5);
  • }
  • thread_end();
  • }
  • 复制代码
    测试结果如下:
    与freertos相比,该芯片可以通过全局变量来进行数据的传递,无需定义队列等操作。
    与此同时线程2和线程3在同时翻转电平,经测试线程3会比线程2慢大约100ns,这可能是线程之间转换所导致的延迟。如图所示:
    本文主要验证了该芯片的串口,GPIO,多线程切换的功能。因为最近正在调试ad7124芯片,下一步将尝试着用该芯片去控制ad7124进行数据采集。



    作者: 文件转输管家, 来源:面包板社区

    链接: https://mbb.eet-china.com/blog/uid-me-4009904.html

    版权声明:本文为博主原创,未经本人允许,禁止转载!

    PARTNER CONTENT

    文章评论0条评论)

    登录后参与讨论
    我要评论
    0
    11
    关闭 站长推荐上一条 /1 下一条