一、线程频率设置
配置代码生成工具软件如下图所示。通过鼠标点选,配置每个线程的频率与占用的空间大小。

配置过程有如下提示,也就是每组最多只能点用1/4的主频时间,也就是两个1/8,或是4个1/16。如果按200M的主频,最高线程频率的就是50M了。

二、线程空间设置
整个芯片的存储器分配支持3种模式。在没有特殊场景应用时,这里先配置成64+64的模式。
这里配置的线程栈空间是占用的数据空间,而且是全局数据空间,而不是代码空间。
64K数据空间的大小为65344,而不是65536,有可能还有一部分预留给芯片的线程调度吧。
这个空间在实际写代码完成某个功能前,不能确切的知道线程占用多少空间,所以,前期先设置的大一些,后期再调整。在项目开发过程中,要不断的来优化调整。
三、代码生成
线程按如下图所示进行配置。

配置好后,点最下面的“生成代码”,这时,会在软件的目录下生成两个新的文件:MC3172.lds与thread_config.h,这两个文件,就是对上面线程的配置文件。
其中MC3172.lds是存储器分配配置,thread_config.h是线程的频率与空间配置。
建议:
每次打开线程配置工具,所有的配置都是这的,这里建议,条开时先读取上次配置的文件保持上次的配置,再打开直接修改就可以了,而不是每次都要重新配置。
在MC3172.lds文件开头,可以看到CODE与DATA的空间分配情况,但长度与配置文件上显示的也不太一样,也并不是65536;而是65520与62272.

四、GPIO
查看了一下工程代码,其中没有一层层封装的库,外设的配置与使用,全都在一个MC3172.h的头文件中定义,直接操作的寄存器。
官方工程中,有一个GPIO_GPCOM_TIMER_Example.c的文件,其中有外设的使用方式,与寄存器的的一些配置方式与宏定义的例程。
如GPIO的使用如下代码:
程序烧写只能使用官方的GX_ISPTool工具,目前还无法进行仿真。
但这个工具在我的电脑(64位win10)上运行时,常常无响应,要等很长时间,尤其是下载成功后,校验的阶段,等了5分钟,还是没有什么反应。

于是换了台电脑就可以烧写成功了。不过,这个烧写速度是真的慢啊

测试 GPIO输出:

五、串口使用
串口的配置,参考GPIO_GPCOM_TIMER_Example.c中的代码就可以了, 这里的串口号定义如下:
#define GPCOM0_BASE_ADDR 0x60300000
#define GPCOM1_BASE_ADDR 0x60301000
#define GPCOM2_BASE_ADDR 0x60302000
#define GPCOM3_BASE_ADDR 0x60303000
#define GPCOM4_BASE_ADDR 0x60304000
#define GPCOM5_BASE_ADDR 0x60305000
#define GPCOM6_BASE_ADDR 0x60306000
#define GPCOM7_BASE_ADDR 0x60307000
#define GPCOM8_BASE_ADDR 0x60308000
#define GPCOM9_BASE_ADDR 0x60309000
#define GPCOM10_BASE_ADDR 0x6030a000
#define GPCOM11_BASE_ADDR 0x6030b000
每组串口一共有四个引脚,RX与TX如下所示。

还有一点注意的是,例程中的GPCOM_SET_COM_SPEED(gpcom_sel,12000000,115200);
这里的12000000是48M分频后的结果,所以,时钟这时要选择外部的48M时钟。
如下,发送一 串数据结果。

至于其他的外设,直接使用GPIO_GPCOM_TIMER_Example.c中的配置代码就可以直接使用,使用的方式,自己再封装成比较方便的函数来调用。