- 打卡等级:偶尔看看III
- 打卡总天数:51
- 最近打卡:2025-12-17 15:46:32
已绑定手机
中级会员
- 积分
- 363
|
发表于 2025-10-28 23:38:34
|
显示全部楼层
今天使用了吴经理赠送的擎天柱核心板,实验了前几天学的点灯程序,从isp软件中找LED实例程序,但是下载程序要按P32和gnd,弄了几遍就烦了,又尝试usb不停电下载,真的非常方便,按照冲哥视频里教授的方法一步一步做就能实现,但是出现了报错,是Lib文件里有char *USER_STCISPCMD ="@STCISP#"; 程序里再出现char *USER_STCISPCMD ="@STCISP#";就出现重定义报错,注释掉就一切正常了 ,于是开启了点灯大师的第一步。
#include <AI8051U.H> //包含AI8051U的头文件
#include "intrins.h" //使用_nop_()函数所必须要包含的头文件,
//否则延时函数中调用的_nop_()函数没有被头文件引用过来,
//会导致编译器找不到这个而函数而报错。
#include "stc32_stc8_usb.h" //不断电下载头文件
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
//char *USER_STCISPCMD ="@STCISP#";
void Delay500ms(void) //延时函数,主频40MHz
{
unsigned long edata i; //定义变量
_nop_(); //空指令
_nop_();
i = 4999998UL; //变量初始化
while (i) i--; //循环等待
}
//上面延时函数部分代码可使用AIapp-ISP软件的“软件延时计算器”工具来生成。
void main(void)
{
EAXFR = 1; //允许访问扩展的特殊寄存器,XFR
//(32 位模式请使用这句,注释下一句)
P_SW2 |= 0x80; //允许访问扩展的特殊寄存器,XFR
//(8位模式请使用这句,注释上一句)。
WTST = 0; //设置取程序代码等待时间,
//赋值为 0表示不等待,程序以最快速度运行
CKCON = 0; //设置访问片内的 xdata速度,
//赋值为 0表示用最快速度访问,不增加额外的等待时间
P0M0 = 0x00; P0M1 = 0x00; //设置P0口为准双向口模式
P1M0 = 0x00; P1M1 = 0x00; //设置P1口为准双向口模式
P2M0 = 0x00; P2M1 = 0x00; //设置P2口为准双向口模式
P3M0 = 0x00; P3M1 = 0x00; //设置P3口为准双向口模式
P4M0 = 0x00; P4M1 = 0x00; //设置P4口为准双向口模式
P5M0 = 0x00; P5M1 = 0x00; //设置P5口为准双向口模式
P6M0 = 0x00; P6M1 = 0x00; //设置P6口为准双向口模式
P7M0 = 0x00; P7M1 = 0x00; //设置P7口为准双向口模式
//上面的将所有I/O口都初始化为准双向口工作模式的程序,
//可以使用AIapp-ISP软件的“I/O口配置工具”来生成。
usb_init(); //USB CDC 接口配置
IE2 |=0x80; //使能USB中断
EA = 1;
while (DeviceState != DEVSTATE_CONFIGURED);//等待USB完成配置
P40 = 0; //打开LED部分的供电
while(1)
{
if (bUsbOutReady)
{
USB_SendData(UsbOutBuffer,OutNumber); //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
usb_OUT_done();
}
//LED循环自动闪烁部分
P2 = ~P2; //对P0端口取反
// P00 = ~P00; //对单个端口取反
Delay500ms(); //调用延时函数,延时0.5s
}
}
|
|