usb不停电下载
stc32的不停电下载模式(这个必要)[*]设计方案:第一步:去官方下载USB的资源官方下载地址: https://www.stcai.com/Customer/FileDownloadVerifyPass?fileid=656048下载完成后后面的步骤按官方文档来设置。下面给大家提供实现代码:
[*]代码
[*]// 头文件
#include "stc32g.h" //stc32g头文件
#include "stc32_stc8_usb.h"
// USB 不停电自动下载必要的代码
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#"; //不停电自动ISP下载命令
void sys_init(); // 设置为准双向口函数的声明
void delay_ms(u8 ms); // 延时函数的声明
//主函数
void main()
{
sys_init(); // USB函数
usb_init(); // USB初始化
EUSB = 1; // 使用USB中断
EA = 1;
while (DeviceState != DEVSTATE_CONFIGURED); //等待 USB 完成配置
while (1)
{
delay_ms(2);
if (bUsbOutReady)//判断时候生成虚拟端口
{
USB_SendData(UsbOutBuffer,OutNumber);
usb_OUT_done();
}
}
}
// 准双向口函数
void sys_init()
{
WTST = 0;
CKCON = 0;
EAXFR = 1;
P0M1 = 0; P0M0 = 0; //设置为准双向口
P1M1 = 0; P1M0 = 0; //设置为准双向口
P2M1 = 0; P2M0 = 0; //设置为准双向口
P3M1 = 0; P3M0 = 0; //设置为准双向口
P4M1 = 0; P4M0 = 0; //设置为准双向口
P5M1 = 0; P5M0 = 0; //设置为准双向口
P6M1 = 0; P6M0 = 0; //设置为准双向口
P7M1 = 0; P7M0 = 0; //设置为准双向口
// P3.0/P3.1和USB的D-/D+共用PIN脚,需要将P3.0/P3.1设置为高祖输入模式
P3M0 &= ~0X03;
P3M1 |= 0X03;
IRC48MCR = 0X80;
while (!(IRC48MCR & 0X01));
USBCLK = 0X00;
USBCON = 0X90;
}
//延时函数
void delay_ms(u8 ms)
{
u16 i;
do {
i = MAIN_Fosc / 6000;
while (--i);
} while (--ms);
}
页:
[1]