MC3172
首先非常感谢面包板社区让我拿到MC3172的板子,板子非常的精致小巧。
先简单了解一下官方给出的资料,有助于大家快速了解官方资料,方便开发:
第一个MC3172_Template是MC3172的例程;
打开这个文件在MC3172文件里有线程配置工具。
在Release里有下载程序。
第二个CH554G_FIRMWARE_v1.1是CH554G的 hex固件。
第三个是MounRiver_Studio安装地点。
第四个是我个人解压出来的MC3172的小板子的立创的格式PCB。
第五个、第六个是MC3172的开发指南。
指南(1):里面有图形化代码配置工具
按照说明可以将工程配置好。
再按说明使用GX_ISPTool工具将工程生成的hex固件烧录到芯片里。
有一个要注意的是:开发板是USB-micro的线,有一点要确保你的micro线是有信号线的。
我拿的usb-micro线没有信号线的,哈哈哈。在迷惑了一段时间。后来换了条micro就可以找到驱动了233。
驱动是CH554G,可以去沁恒官网找最新的驱动固件烧录进去。
指南(2):里面有一些例子说明如何去使用该单片机的,比较简单只有GPIO和定时器、CPCOM。
第七个是MC3172的手册:
虽然说明了该芯片的一些基本的信息。
第八个是更新串口固件的方法。
第九个是说明了该板子是有无源48M晶振。
最后一个是开发板的尺寸引脚。
现在我们已经了解了官方的资料了
现在看看板子吧。
全黑配色,一个usb-micro烧录,剩下都是接口,有跳线帽的都是电源脚。
使用 MounRiver Studio打开MC3172.wvproj这个文件,我们可以看见整个工程脉络。
在编写代码前,我们使用线程配置工具配置如下
点击生成代码。
如何回到工程里的mian.c里编写代码。
代码如下:
void thread0_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_PIN0|GPIO_PIN1,GPIO_SET_ENABLE);
GPIO_SET_OUTPUT_PIN_TO_0(GPIOA_BASE_ADDR,(GPIO_PIN0|GPIO_PIN1));
while(1){
GPIO_SET_OUTPUT_PIN_INV(GPIOA_BASE_ADDR,(GPIO_PIN0|GPIO_PIN1));
for (u32 var = 0; var < 5000; ++var) {
NOP();
}
//user code section
//GPIO_EXAMPLE(GPIOA_BASE_ADDR);
}
thread_end();
}
////////////////////////////////////////////////////////////
void thread1_main(void)
{
// 这个宏用于对外设进行启动,主要是设置外设使用的时钟频率以及特权组
INTDEV_SET_CLK_RST(GPIOB_BASE_ADDR,
(INTDEV_RUN|
INTDEV_IS_GROUP0|
INTDEV_CLK_IS_CORECLK_DIV2));
// 这个宏用于打开 GPIO 的输出使能
GPIO_SET_OUTPUT_EN_VALUE(GPIOB_BASE_ADDR,GPIO_PIN0|GPIO_PIN1,GPIO_SET_ENABLE);
// 这个宏用于把指定管脚输出 1,同时不影响其他管脚值。
GPIO_SET_OUTPUT_PIN_TO_0(GPIOB_BASE_ADDR,(GPIO_PIN0|GPIO_PIN1));
while(1){
GPIO_SET_OUTPUT_PIN_INV(GPIOB_BASE_ADDR,(GPIO_PIN0|GPIO_PIN1));
for (u32 var = 0; var < 5000; ++var) {
NOP();
}
//user code section
//GPCOM_UART_EXAMPLE(GPCOM8_BASE_ADDR);
}
thread_end();
}
开4个线程 每个50M,在里面编个电平翻转,比较一下电平翻转同步时间怎么样。
两个电平翻转的延时差了大约3.76us左右,应该是硬件线程切换和有两个空线程影响了延时时间。
总结:从这个现象来看的话,该评估板是硬件轮询切换线程的,也确实是官方说的线程同步并行运行。可以不用自己移植RTOS,方便开发。但是官方说各个线程共享数据段和代码段。在实际开发时,可能要注意线程数据的保护,或者说自己实现简单的线程通讯。
有时间我会再试试MC3172通讯接口的。。。。
再次感谢面包板社区提供了这样一个机会让我能够接触到MC3172评估板!