拿到了STC家的32位8051——追风剑-STC32F12K54-64MHz ! RMB2.3 据说MCU内置3大亮点 “三角函数运算器,浮点运算器,250MHz-PWM”。 当然上面的都是官方的“片面之词”,本着求真务实的本性,我得一个个测试下是不是骗我的哈哈。 测试一:自带硬件USB在线仿真 看到这个芯片支持三种仿真 这里写着支持串口仿真,USB仿真和SWD仿真,串口仿真需要串口线,SWD仿真需要LINK1D仿真器(也是下载器),这里选择最方便的USB仿真,只需要一个USB-typec的线就搞定了,硬件连线如下:
在看到官网的程序包里,第一个就是最直观的跑马灯功能,这里果断选择这个程序作为我们的测试程序。
但是打开这个工程之后需要注意的是这个工程是带HID功能的,他会占用P30,P31引脚,但是我们USB仿真也需要用到这个引脚,需要修改下代码才能作为仿真试用!!
如上这个工程目录里,一眼就看到了这个stc_usb_hid_32f.lib,所以这个工程需要手动的修改一下,删掉所有HID的部分,最终的代码如下所示:
-
- #include "../comm/STC32F.h" //包含此头文件后,不需要再包含"reg51.h"头文件
-
- #define MAIN_Fosc 22118400UL
-
- void delay_ms(int ms);
- void HardwareMarquee(void);
-
- /******************** 主函数 **************************/
- void main(void)
- {
- EAXFR = 1; //扩展寄存器(XFR)访问使能
-
- RSTFLAG |= 0x04; //设置硬件复位后需要检测P3.2的状态选择运行区域,否则硬件复位后进入USB下载模式
-
- P0M1 = 0x00; P0M0 = 0x00; //设置为准双向口
- P1M1 = 0x00; P1M0 = 0x00; //设置为准双向口
- P2M1 = 0x00; P2M0 = 0x00; //设置为准双向口
- P3M1 = 0x00; P3M0 = 0x00; //设置为准双向口
- P4M1 = 0x00; P4M0 = 0x00; //设置为准双向口
- P5M1 = 0x00; P5M0 = 0x00; //设置为准双向口
- P6M1 = 0x00; P6M0 = 0x00; //设置为准双向口
- P7M1 = 0x00; P7M0 = 0x00; //设置为准双向口
-
- EA = 1; //打开总中断
-
- while(1)
- {
- HardwareMarquee();
- }
- }
-
-
- void HardwareMarquee(void)
- {
- P20 = 0; //LED On
- delay_ms(250);
- P20 = 1; //LED Off
- P21 = 0; //LED On
- delay_ms(250);
- P21 = 1; //LED Off
- P22 = 0; //LED On
- delay_ms(250);
- P22 = 1; //LED Off
- P23 = 0; //LED On
- delay_ms(250);
- P23 = 1; //LED Off
- P24 = 0; //LED On
- delay_ms(250);
- P24 = 1; //LED Off
- P25 = 0; //LED On
- delay_ms(250);
- P25 = 1; //LED Off
- P26 = 0; //LED On
- delay_ms(250);
- P26 = 1; //LED Off
- P27 = 0; //LED On
- delay_ms(250);
- P27 = 1; //LED Off
- P26 = 0; //LED On
- delay_ms(250);
- P26 = 1; //LED Off
- P25 = 0; //LED On
- delay_ms(250);
- P25 = 1; //LED Off
- P24 = 0; //LED On
- delay_ms(250);
- P24 = 1; //LED Off
- P23 = 0; //LED On
- delay_ms(250);
- P23 = 1; //LED Off
- P22 = 0; //LED On
- delay_ms(250);
- P22 = 1; //LED Off
- P21 = 0; //LED On
- delay_ms(250);
- P21 = 1; //LED Off
- }
-
- //========================================================================
- // 函数: void delay_ms(u8 ms)
- // 描述: 延时函数。
- // 参数: ms,要延时的ms数, 这里只支持1~255ms. 自动适应主时钟.
- // 返回: none.
- // 版本: VER1.0
- // 日期: 2022-6-3
- // 备注:
- //========================================================================
- void delay_ms(int ms)
- {
- int i;
- do{
- i = MAIN_Fosc / 14000; //软件延时与程序指令延时参数(WTST)值有关
- while(--i);
- }while(--ms);
- }
-
-
复制代码
代码只保留了端口初始化,延时和LED来回闪烁的功能, 然后对工程进行下设置:
然后工程如上设置,那代码部分就设置完了,开始硬件部分配置:
1.将板子上的芯片制作为仿真芯片,先按下板子上的P32按钮,在按下电源键并松开,最后松开P32按钮,就可以再串口那栏看见HID的那一行了,没有的话手动安装下驱动~
2.设置仿真芯片
这里需要注意时钟1指向的时钟选择自己的代码工程里定义好的主时钟,我的代码是22.1184Mhz的时钟,一定要和代码匹配!!
3.等待制作完成
出现上述提示即为成功,可以关闭这个软件了。这里切记一定要给板子断一下电在进行后续操作!!
4.编译代码
代码0错误,0警告,没有问题
5.进入仿真模式:
可以看到上面已经进入了经典的仿真界面!!!!非常的华丽,可以像我一样在哪一行打个断点,在点击全速运行!
然后就可以看到板子上的灯会来回的流动一圈了,再点一次运行就会再动一次,然后就可以开始后面的开发之旅啦!!~祝各位小伙伴用的愉快
|