原创
【MC3172】第一次与并行线程处理器的约会
首先感谢面包板社区让我获得了这块MC3172评估板,我是今天早上才拿到板子的。在拿到之前我以为这块板子会像之前ST的那种评估板的尺寸那么大,拿到手后才发现这个板子是如此的精致。
板子的线程配置工具做的也算是比较友好,很精简,用起来十分的方便
在这里我一共配置了4个线程,每个线程都为1/8的主频,线程的空间为1024byte。(ps:这里每个线程的频率最大只能为主频的1/4),在配置完后点击生成代码可以得到 thread_config.h 和 MC3172.lds 两个文件。
至此,MC3172 的主要参数已经配置完毕,用户只需要在 main.c 对应的 threadn_main 函数
中实现自己的代码即可。
接下来谈谈开发工具IDE,MC3172采用的是国产开发环境 MounRiver Studio,在下载这个开发工具之前,我本以为会用起来很拉跨,在使用的过程中你会发现还是比较友好的,个人感觉集成了 STM32CubeIDE与Keil的优点吧, 还有就是无法在线调试板子(可能自己没有配置好的原因吧!)
由于今天时间不是很多,看了下MC3172_Template提供的example,做了个简单的测评
1、GPIO测试
首先板子拿到手,按照常规套路,最常见的就是点个led灯,由于我这没有外围的灯,我直接使用示波器进行波形的观察。
我这里点灯使用的是线程3,除此此之外还使能了一个线程1,用来进行串口的收、发实验。因此找到 MC3172_Template\USER_CODE目录下的主函数,将线程3的宏使能即可。
更改线程1函数中的内容,我这里比较懒了,就增加了一句 GPIO_PIN7 在不断的进行反转。GPIO_EXAMPLE(u32 gpio_sel)函数的入口参数是 GPIOX的基地址,我里使用的GPIOA。
将线程补充完整后,需要到main函数进行调用一下
这个时候编译完成后,下到板子里面 就可以看到GPIOA_GPIO_PIN_17引脚上的电平进行反转了。
串口通信配置
在GPIO_GPCOM_TIMER_Example.c文件中,给我提供了串口通信部分的代码,我们主要稍微做下修改就能实现串口数据的自收自发了。这里使用的是GPCOM7,将GPIOB14、GPIOB15分别复用为串口GPCOM7的RX与TX。
- void GPCOM_UART_EXAMPLE(u32 gpcom_sel)
- {
- INTDEV_SET_CLK_RST(gpcom_sel,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV4));
- GPCOM_SET_IN_PORT(gpcom_sel,(GPCOM_RXD_IS_P2));
- GPCOM_SET_OUT_PORT(gpcom_sel,( \
- 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(gpcom_sel,GPCOM_UART_MODE);
- GPCOM_SET_COM_SPEED(gpcom_sel,12000000,115200);
- GPCOM_SET_OVERRIDE_GPIO(gpcom_sel, ( \
- GPCOM_P2_OVERRIDE_GPIO|GPCOM_P2_INPUT_ENABLE | \
- GPCOM_P3_OVERRIDE_GPIO \
- ));
- #ifdef TEST_ONLY_UART_TX
- while(1){
- while(GPCOM_TX_FIFO_FULL(gpcom_sel));
- for (u32 var = 0; var < 90; ++var) {
- NOP();
- GPCOM_PUSH_TX_DATA(gpcom_sel,rx_data);
- }
- //GPCOM_PUSH_TX_DATA(gpcom_sel,0x31);
- }
- #else
- u8 rx_data_rp=0;
- u8 rx_data=0;
- rx_data_rp=GPCOM_GET_RX_WP(gpcom_sel);
- while(1) {
- if(rx_data_rp!=(GPCOM_GET_RX_WP(gpcom_sel))){
- rx_data=GPCOM_GET_RX_DATA(gpcom_sel,rx_data_rp);
- GPCOM_PUSH_TX_DATA(gpcom_sel,rx_data);
- rx_data_rp++;
- rx_data_rp&=0x0f;
- }
- }
- #endif
- }
在main函数线程1中添加改线程,并将GPCOM7的基地址传入即可完成串口使用的初始化
先来一波串口自发自收的波形展示
再来一张 串口调助手的
总结:
感觉这个国产的单片机在使用、体验方面还是不错的。在开发环境方面有着极简的线程配置工具,操作便捷的IDE开发软件,在硬件外设接口方面有着丰富的外设接口,单片机运行主频高,64个线程同时并行运行,无需进行线程之间的切换,省事了不少。
还有一个疑问,这些线程与线程之间该怎样进行通信呢?好像在提供的代码里面没有看到信号量、消息队列这些。
最后希望更多的评测者带来更多评测的作品!
作者: E_ARM, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-3989713.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
文章评论(0条评论)
登录后参与讨论