20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解)

这篇具有很好参考价值的文章主要介绍了20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


08第六集:LED闪烁第六集:LED闪烁和花式点灯上和花式点灯上.mp4
09第六集:LED闪烁和花式点灯下.mp4


【大文哥学习32位8051】20230704【冲哥视频】第六集的晶振时钟的学习困惑
2023/7/5 17:36


delay_ms(3000);
刷机的时候如果使用11.0592M的Fosc,3秒钟的延迟大概7秒钟。

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件


刷机的时候如果使用24M的Fosc,3秒钟的延迟大概3.5秒钟。

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件


0、
https://www.stcai.com/syx
实验箱

STC32G实验箱9.6
主控芯片使用STC32G12K128,可以做示波器、波形发生器、TFT彩屏显示、OLED 12864、LCD 12864

代码下载
使用说明 STC32G12K128实验箱-V9.6使用说明书.pdf
原理图


STC32G12K128实验箱-V9.6使用说明书.pdf

例程01:

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件


#include "COMM/stc.h"        //调用头文件
#include "COMM/usb.h"

#define MAIN_Fosc 24000000L  // 定义一个IRC系统时钟

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
    
//sbit P40 = P4^0;    //三极管控制引脚
//sbit P60 = P6^0;    //LED控制引脚
//sbit P61 = P6^1;    //LED控制引脚

void sys_init();    //函数声明

void delay_ms(u16 ms)  // unsigned int
{
    u16 i;
    
    do
    {
        i = MAIN_Fosc/6000;
        while(--i);
    }while(--ms);
}


void main()                    //程序开始运行的入口
{
    sys_init();                //USB功能+IO口初始化
    usb_init();                //usb库初始化
    EA = 1;                    //CPU开放中断,打开总中断。
    
    while(1)        //死循环
    {
        if( DeviceState != DEVSTATE_CONFIGURED )     //
            continue;
        if( bUsbOutReady )                                
        {
            usb_OUT_done();
            printf("%03.3f\r\n",1.12);
            printf("%u \r\n",1<<3);
        }
        P40 = 0;    //三极管引脚输出低电平
        
        P60 = 0;    //led0引脚输出低电平
        delay_ms(500);
        
        P60 = 1;
        delay_ms(500);
        
        //SOS_Led();

    }
}


void sys_init()        //函数定义
{
    WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度

    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;   //设置为准双向口
    
    P3M0 = 0x00;
    P3M1 = 0x00;
    
    P3M0 &= ~0x03;
    P3M1 |= 0x03;

    //设置USB使用的时钟源
    IRC48MCR = 0x80;    //使能内部48M高速IRC
    while (!(IRC48MCR & 0x01));  //等待时钟稳定

    USBCLK = 0x00;    //使用CDC功能需要使用这两行,HID功能禁用这两行。
    USBCON = 0x90;
}

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件

 晚上拍照效果图:

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件


例程02:

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件


#include "COMM/stc.h"        //调用头文件
#include "COMM/usb.h"

#define MAIN_Fosc 24000000L  // 定义一个IRC系统时钟

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
    
//sbit P40 = P4^0;    //三极管控制引脚
//sbit P60 = P6^0;    //LED控制引脚
//sbit P61 = P6^1;    //LED控制引脚

void sys_init();    //函数声明

void delay_ms(u16 ms)  // unsigned int
{
    u16 i;
    
    do
    {
        i = MAIN_Fosc/6000;
        while(--i);
    }while(--ms);
}


void main()                    //程序开始运行的入口
{
    sys_init();                //USB功能+IO口初始化
    usb_init();                //usb库初始化
    EA = 1;                    //CPU开放中断,打开总中断。
    
    while(1)        //死循环
    {
        if( DeviceState != DEVSTATE_CONFIGURED )     //
            continue;
        if( bUsbOutReady )                                
        {
            usb_OUT_done();
            printf("%03.3f\r\n",1.12);
            printf("%u \r\n",1<<3);
        }
        P40 = 0;    //三极管引脚输出低电平
        
        P67 = 0;    //led7引脚输出低电平
        
        P60 = 0;    //led0引脚输出低电平
        delay_ms(500);
        
        P60 = 1;
        delay_ms(500);
        
        //SOS_Led();

    }
}


void sys_init()        //函数定义
{
    WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度

    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;   //设置为准双向口
    
    P3M0 = 0x00;
    P3M1 = 0x00;
    
    P3M0 &= ~0x03;
    P3M1 |= 0x03;

    //设置USB使用的时钟源
    IRC48MCR = 0x80;    //使能内部48M高速IRC
    while (!(IRC48MCR & 0x01));  //等待时钟稳定

    USBCLK = 0x00;    //使用CDC功能需要使用这两行,HID功能禁用这两行。
    USBCON = 0x90;
}

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件

晚上拍照效果图:

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件

例程03:

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件


#include "COMM/stc.h"        //调用头文件
#include "COMM/usb.h"

#define MAIN_Fosc 24000000L  // 定义一个IRC系统时钟

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
    
//sbit P40 = P4^0;    //三极管控制引脚
//sbit P60 = P6^0;    //LED控制引脚
//sbit P61 = P6^1;    //LED控制引脚

void sys_init();    //函数声明

void delay_ms(u16 ms)  // unsigned int
{
    u16 i;
    
    do
    {
        i = MAIN_Fosc/6000;
        while(--i);
    }while(--ms);
}


void main()                    //程序开始运行的入口
{
    sys_init();                //USB功能+IO口初始化
    usb_init();                //usb库初始化
    EA = 1;                    //CPU开放中断,打开总中断。
    
    while(1)        //死循环
    {
        if( DeviceState != DEVSTATE_CONFIGURED )     //
            continue;
        if( bUsbOutReady )                                
        {
            usb_OUT_done();
            printf("%03.3f\r\n",1.12);
            printf("%u \r\n",1<<3);
        }
        P40 = 0;    //三极管引脚输出低电平
        
        P67 = 0;    //led7引脚输出低电平
        
        P60 = 0;    //led0引脚输出低电平
        delay_ms(500);
        
        P67 = 1;
        P60 = 1;
        delay_ms(500);

        
        //SOS_Led();
    }
}


void sys_init()        //函数定义
{
    WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度

    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;   //设置为准双向口
    
    P3M0 = 0x00;
    P3M1 = 0x00;
    
    P3M0 &= ~0x03;
    P3M1 |= 0x03;

    //设置USB使用的时钟源
    IRC48MCR = 0x80;    //使能内部48M高速IRC
    while (!(IRC48MCR & 0x01));  //等待时钟稳定

    USBCLK = 0x00;    //使用CDC功能需要使用这两行,HID功能禁用这两行。
    USBCON = 0x90;
}

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件

晚上拍照效果图:

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件

例程11:累加

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件


#include "COMM/stc.h"        //调用头文件
#include "COMM/usb.h"

#define MAIN_Fosc 24000000L  // 定义一个IRC系统时钟

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
    
//sbit P40 = P4^0;    //三极管控制引脚
//sbit P60 = P6^0;    //LED控制引脚
//sbit P61 = P6^1;    //LED控制引脚

void sys_init();    //函数声明

void delay_ms(u16 ms)  // unsigned int
{
    u16 i;
    
    do
    {
        i = MAIN_Fosc/6000;
        while(--i);
    }while(--ms);
}


void main()                    //程序开始运行的入口
{
    int a = 0;
    
    sys_init();                //USB功能+IO口初始化
    usb_init();                //usb库初始化
    EA = 1;                    //CPU开放中断,打开总中断。
    
    while(1)        //死循环
    {
        if( DeviceState != DEVSTATE_CONFIGURED )     //
            continue;
        if( bUsbOutReady )                                
        {
            usb_OUT_done();
            //printf("%03.3f\r\n",1.12);
            //printf("%u \r\n",1<<3);
            
            do
            {
                printf("a的值为:%d\r\n", a);
                a = a+1;
            }while(a<20);

        }
        //P40 = 0;    //三极管引脚输出低电平
        //
        //P67 = 0;    //led7引脚输出低电平
        //
        //P60 = 0;    //led0引脚输出低电平
        //delay_ms(500);
        //
        //P67 = 1;
        //P60 = 1;
        //delay_ms(500);
        
        //SOS_Led();
    }
}


void sys_init()        //函数定义
{
    WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度

    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;   //设置为准双向口
    
    P3M0 = 0x00;
    P3M1 = 0x00;
    
    P3M0 &= ~0x03;
    P3M1 |= 0x03;

    //设置USB使用的时钟源
    IRC48MCR = 0x80;    //使能内部48M高速IRC
    while (!(IRC48MCR & 0x01));  //等待时钟稳定

    USBCLK = 0x00;    //使用CDC功能需要使用这两行,HID功能禁用这两行。
    USBCON = 0x90;
}

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件

串口打印:
[21:17:36.854]发送→1
[21:17:36.867]接收←a的值为:0
                    a的值为:1
                    a的值为:2
                    a的值为:3
                    a的值为:4
                    a的值为:5
                    a的值为:6
                    a的值为:7
                    a的值为:8
                    a的值为:9
                    a的值为:10
                    a的值为:11
                    a的值为:12
                    a的值为:13
                    a的值为:14
                    a的值为:15
                    a的值为:16
                    a的值为:17
                    a的值为:18
                    a的值为:19

[21:17:36.854]发送→31 
[21:17:36.867]接收←61 B5 C4 D6 B5 CE AA A3 BA 30 0D 0A 61 B5 C4 D6 
                    B5 CE AA A3 BA 31 0D 0A 61 B5 C4 D6 B5 CE AA A3 
                    BA 32 0D 0A 61 B5 C4 D6 B5 CE AA A3 BA 33 0D 0A 
                    61 B5 C4 D6 B5 CE AA A3 BA 34 0D 0A 61 B5 C4 D6 
                    B5 CE AA A3 BA 35 0D 0A 61 B5 C4 D6 B5 CE AA A3 
                    BA 36 0D 0A 61 B5 C4 D6 B5 CE AA A3 BA 37 0D 0A 
                    61 B5 C4 D6 B5 CE AA A3 BA 38 0D 0A 61 B5 C4 D6 
                    B5 CE AA A3 BA 39 0D 0A 61 B5 C4 D6 B5 CE AA A3 
                    BA 31 30 0D 0A 61 B5 C4 D6 B5 CE AA A3 BA 31 31 
                    0D 0A 61 B5 C4 D6 B5 CE AA A3 BA 31 32 0D 0A 61 
                    B5 C4 D6 B5 CE AA A3 BA 31 33 0D 0A 61 B5 C4 D6 
                    B5 CE AA A3 BA 31 34 0D 0A 61 B5 C4 D6 B5 CE AA 
                    A3 BA 31 35 0D 0A 61 B5 C4 D6 B5 CE AA A3 BA 31 
                    36 0D 0A 61 B5 C4 D6 B5 CE AA A3 BA 31 37 0D 0A 
                    61 B5 C4 D6 B5 CE AA A3 BA 31 38 0D 0A 61 B5 C4 
                    D6 B5 CE AA A3 BA 31 39 0D 0A 


例程12:自加

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件

#include "COMM/stc.h"        //调用头文件
#include "COMM/usb.h"

#define MAIN_Fosc 24000000L  // 定义一个IRC系统时钟

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
    
//sbit P40 = P4^0;    //三极管控制引脚
//sbit P60 = P6^0;    //LED控制引脚
//sbit P61 = P6^1;    //LED控制引脚

void sys_init();    //函数声明

void delay_ms(u16 ms)  // unsigned int
{
    u16 i;
    
    do
    {
        i = MAIN_Fosc/6000;
        while(--i);
    }while(--ms);
}


void main()                    //程序开始运行的入口
{
    //int a = 0;
    int a = 10;

    
    sys_init();                //USB功能+IO口初始化
    usb_init();                //usb库初始化
    EA = 1;                    //CPU开放中断,打开总中断。
    
    while(1)        //死循环
    {
        if( DeviceState != DEVSTATE_CONFIGURED )     //
            continue;
        if( bUsbOutReady )                                
        {
            usb_OUT_done();
            //printf("%03.3f\r\n",1.12);
            //printf("%u \r\n",1<<3);
            
            do
            {
                printf("a的值为:%d\r\n", a);
                //a = a+1;
                a++;
            }while(a<20);

        }
        //P40 = 0;    //三极管引脚输出低电平
        //
        //P67 = 0;    //led7引脚输出低电平
        //
        //P60 = 0;    //led0引脚输出低电平
        //delay_ms(500);
        //
        //P67 = 1;
        //P60 = 1;
        //delay_ms(500);
        
        //SOS_Led();
    }
}


void sys_init()        //函数定义
{
    WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度

    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;   //设置为准双向口
    
    P3M0 = 0x00;
    P3M1 = 0x00;
    
    P3M0 &= ~0x03;
    P3M1 |= 0x03;

    //设置USB使用的时钟源
    IRC48MCR = 0x80;    //使能内部48M高速IRC
    while (!(IRC48MCR & 0x01));  //等待时钟稳定

    USBCLK = 0x00;    //使用CDC功能需要使用这两行,HID功能禁用这两行。
    USBCON = 0x90;
}

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件

串口打印:
[21:19:57.629]发送→1
[21:19:57.635]接收←a的值为:10
                    a的值为:11
                    a的值为:12
                    a的值为:13
                    a的值为:14
                    a的值为:15
                    a的值为:16
                    a的值为:17
                    a的值为:18
                    a的值为:19

[21:19:57.629]发送→31 
[21:19:57.635]接收←61 B5 C4 D6 B5 CE AA A3 BA 31 30 0D 0A 61 B5 C4 
                    D6 B5 CE AA A3 BA 31 31 0D 0A 61 B5 C4 D6 B5 CE 
                    AA A3 BA 31 32 0D 0A 61 B5 C4 D6 B5 CE AA A3 BA 
                    31 33 0D 0A 61 B5 C4 D6 B5 CE AA A3 BA 31 34 0D 
                    0A 61 B5 C4 D6 B5 CE AA A3 BA 31 35 0D 0A 61 B5 
                    C4 D6 B5 CE AA A3 BA 31 36 0D 0A 61 B5 C4 D6 B5 
                    CE AA A3 BA 31 37 0D 0A 61 B5 C4 D6 B5 CE AA A3 
                    BA 31 38 0D 0A 61 B5 C4 D6 B5 CE AA A3 BA 31 39 
                    0D 0A 


例程13:自加-自减

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件

#include "COMM/stc.h"        //调用头文件
#include "COMM/usb.h"

#define MAIN_Fosc 24000000L  // 定义一个IRC系统时钟

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
    
//sbit P40 = P4^0;    //三极管控制引脚
//sbit P60 = P6^0;    //LED控制引脚
//sbit P61 = P6^1;    //LED控制引脚

void sys_init();    //函数声明

void delay_ms(u16 ms)  // unsigned int
{
    u16 i;
    
    do
    {
        i = MAIN_Fosc/6000;
        while(--i);
    }while(--ms);
}


void main()                    //程序开始运行的入口
{
    //int a = 0;
    int a = 10;

    
    sys_init();                //USB功能+IO口初始化
    usb_init();                //usb库初始化
    EA = 1;                    //CPU开放中断,打开总中断。
    
    while(1)        //死循环
    {
        if( DeviceState != DEVSTATE_CONFIGURED )     //
            continue;
        if( bUsbOutReady )                                
        {
            usb_OUT_done();
            //printf("%03.3f\r\n",1.12);
            //printf("%u \r\n",1<<3);
            
            //do
            //{
            //    printf("a的值为:%d\r\n", a);
            //    //a = a+1;
            //    a++;
            //}while(a<20);
            
            a = 10;
            printf("a的值为:%d\r\n", a);
            printf("a的值为:%d\r\n", --a);
            printf("a的值为:%d\r\n", a);
            
            printf("\r\n");
            
            a = 10;
            printf("a的值为:%d\r\n", a);
            printf("a的值为:%d\r\n", a--);
            printf("a的值为:%d\r\n", a);
            
            printf("\r\n");
            
            
            a = 20;
            printf("a的值为:%d\r\n", a);
            printf("a的值为:%d\r\n", ++a);
            printf("a的值为:%d\r\n", a);
            
            printf("\r\n");
            
            a = 20;
            printf("a的值为:%d\r\n", a);
            printf("a的值为:%d\r\n", a++);
            printf("a的值为:%d\r\n", a);

        }
        //P40 = 0;    //三极管引脚输出低电平
        //
        //P67 = 0;    //led7引脚输出低电平
        //
        //P60 = 0;    //led0引脚输出低电平
        //delay_ms(500);
        //
        //P67 = 1;
        //P60 = 1;
        //delay_ms(500);
        
        //SOS_Led();
    }
}


void sys_init()        //函数定义
{
    WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度

    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;   //设置为准双向口
    
    P3M0 = 0x00;
    P3M1 = 0x00;
    
    P3M0 &= ~0x03;
    P3M1 |= 0x03;

    //设置USB使用的时钟源
    IRC48MCR = 0x80;    //使能内部48M高速IRC
    while (!(IRC48MCR & 0x01));  //等待时钟稳定

    USBCLK = 0x00;    //使用CDC功能需要使用这两行,HID功能禁用这两行。
    USBCON = 0x90;
}

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件

串口打印:
[21:22:50.414]发送→1
[21:22:50.424]接收←a的值为:10
                    a的值为:9
                    a的值为:9
                    
                    a的值为:10
                    a的值为:10
                    a的值为:9
                    
                    a的值为:20
                    a的值为:21
                    a的值为:21
                    
                    a的值为:20
                    a的值为:20
                    a的值为:21


[21:22:50.414]发送→31 
[21:22:50.424]接收←61 B5 C4 D6 B5 CE AA A3 BA 31 30 0D 0A 61 B5 C4 
                    D6 B5 CE AA A3 BA 39 0D 0A 61 B5 C4 D6 B5 CE AA 
                    A3 BA 39 0D 0A 0D 0A 61 B5 C4 D6 B5 CE AA A3 BA 
                    31 30 0D 0A 61 B5 C4 D6 B5 CE AA A3 BA 31 30 0D 
                    0A 61 B5 C4 D6 B5 CE AA A3 BA 39 0D 0A 0D 0A 61 
                    B5 C4 D6 B5 CE AA A3 BA 32 30 0D 0A 61 B5 C4 D6 
                    B5 CE AA A3 BA 32 31 0D 0A 61 B5 C4 D6 B5 CE AA 
                    A3 BA 32 31 0D 0A 0D 0A 61 B5 C4 D6 B5 CE AA A3 
                    BA 32 30 0D 0A 61 B5 C4 D6 B5 CE AA A3 BA 32 30 
                    0D 0A 61 B5 C4 D6 B5 CE AA A3 BA 32 31 0D 0A 


例程21:【简单四则运算的】函数调用

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件

#include "COMM/stc.h"        //调用头文件
#include "COMM/usb.h"

#define MAIN_Fosc 24000000L  // 定义一个IRC系统时钟

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
    
//sbit P40 = P4^0;    //三极管控制引脚
//sbit P60 = P6^0;    //LED控制引脚
//sbit P61 = P6^1;    //LED控制引脚

void sys_init();    //函数声明

void delay_ms(u16 ms)  // unsigned int
{
    u16 i;
    
    do
    {
        i = MAIN_Fosc/6000;
        while(--i);
    }while(--ms);
}

int Add(int parm1, parm2)
{
    return parm1 + parm2;
}

int Sub(int parm1, parm2)
{
    return parm1 - parm2;
}

int Mul(int parm1, parm2)
{
    return parm1 * parm2;
}

void main()                    //程序开始运行的入口
{
    //int a = 0;
    int a = 10;
    
    sys_init();                //USB功能+IO口初始化
    usb_init();                //usb库初始化
    EA = 1;                    //CPU开放中断,打开总中断。
    
    while(1)        //死循环
    {
        if( DeviceState != DEVSTATE_CONFIGURED )     //
            continue;
        if( bUsbOutReady )                                
        {
            usb_OUT_done();
            //printf("%03.3f\r\n",1.12);
            //printf("%u \r\n",1<<3);
            
            printf("计算Add(1, 2)结果为:%d\r\n", Add(1, 2));
            printf("计算Sub(5, 2)结果为:%d\r\n", Sub(5, 2));
            printf("计算Mul(5, 3)结果为:%d\r\n", Mul(5, 3));

        }
        //P40 = 0;    //三极管引脚输出低电平
        //
        //P67 = 0;    //led7引脚输出低电平
        //
        //P60 = 0;    //led0引脚输出低电平
        //delay_ms(500);
        //
        //P67 = 1;
        //P60 = 1;
        //delay_ms(500);
        
        //SOS_Led();
    }
}


void sys_init()        //函数定义
{
    WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度

    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;   //设置为准双向口
    
    P3M0 = 0x00;
    P3M1 = 0x00;
    
    P3M0 &= ~0x03;
    P3M1 |= 0x03;

    //设置USB使用的时钟源
    IRC48MCR = 0x80;    //使能内部48M高速IRC
    while (!(IRC48MCR & 0x01));  //等待时钟稳定

    USBCLK = 0x00;    //使用CDC功能需要使用这两行,HID功能禁用这两行。
    USBCON = 0x90;
}

警告信息:
Rebuild target 'Target 1'
compiling Demo.c...
Demo.c(28): warning C35: 'Add': uses old-style declarator
Demo.c(33): warning C35: 'Sub': uses old-style declarator
Demo.c(38): warning C35: 'Mul': uses old-style declarator
linking...
Program Size: data=8.3 edata+hdata=420 xdata=192 const=122 code=7113
creating hex file from ".\Objects\Demo"...
".\Objects\Demo" - 0 Error(s), 3 Warning(s).
Build Time Elapsed:  00:00:01

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件

 

串口打印:
[19:59:34.243]发送→1
[19:59:34.256]接收←计算Add(1, 2)结果为:3
                    计算Sub(5, 2)结果为:3
                    计算Mul(5, 3)结果为:15

[19:59:34.243]发送→31 
[19:59:34.256]接收←BC C6 CB E3 41 64 64 28 31 2C 20 32 29 BD E1 B9 
                    FB CE AA A3 BA 33 0D 0A BC C6 CB E3 53 75 62 28 
                    35 2C 20 32 29 BD E1 B9 FB CE AA A3 BA 33 0D 0A 
                    BC C6 CB E3 4D 75 6C 28 35 2C 20 33 29 BD E1 B9 
                    FB CE AA A3 BA 31 35 0D 0A 


例程31:SOS信号的LED表达
【请注意,请配置开发板的晶振为24MHz。如果使用默认的11.0592MHz,间隔时间大概加倍!^_】

sos 
国际摩尔斯电码救难信号

发信号的方法编辑 播报
有几种不同的发信号方法,不过采用何种方式取决于你的情形和你可用的材料。
通用远程表达方式:
求救方式一:发出声响,三短三长三短(. . . _ _ _ . . .)莫尔斯电码。
求救方式二:灯光,如手电,三短三长三短(开关灯)。
亮200、灭200、亮200、灭200、亮200、灭500、亮400、灭200、亮400、灭200、亮400、灭500、亮200、灭200、亮200、灭200、亮200、灭1300(MS)循环低电平LED亮。

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件

20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解),杂质,单片机,stm32,嵌入式硬件

#include "COMM/stc.h"        //调用头文件
#include "COMM/usb.h"

#define MAIN_Fosc 24000000L  // 定义一个IRC系统时钟

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
    
//sbit P40 = P4^0;    //三极管控制引脚
//sbit P60 = P6^0;    //LED控制引脚
//sbit P61 = P6^1;    //LED控制引脚

void sys_init();    //函数声明


void delay_ms(u16 ms)  // unsigned int
{
    u16 i;
    
    do
    {
        i = MAIN_Fosc/6000;
        while(--i);
    }while(--ms);
}


void SOS_Led(void)
{
    P60 = 0;            //点亮
    delay_ms(200);
    P60 = 1;            //熄灭
    delay_ms(200);
    
    P60 = 0;            //点亮
    delay_ms(200);
    P60 = 1;            //熄灭
    delay_ms(200);
    
    P60 = 0;            //点亮
    delay_ms(200);
    P60 = 1;            //熄灭
    //delay_ms(200);
    delay_ms(500);
    

    P60 = 0;            //点亮
    delay_ms(400);
    P60 = 1;            //熄灭
    delay_ms(200);
    
    P60 = 0;            //点亮
    delay_ms(400);
    P60 = 1;            //熄灭
    delay_ms(200);
    
    P60 = 0;            //点亮
    delay_ms(400);
    P60 = 1;            //熄灭
    delay_ms(500);
    
    
    P60 = 0;            //点亮
    delay_ms(200);
    P60 = 1;            //熄灭
    delay_ms(200);
    
    P60 = 0;            //点亮
    delay_ms(200);
    P60 = 1;            //熄灭
    delay_ms(200);
    
    P60 = 0;            //点亮
    delay_ms(200);
    P60 = 1;            //熄灭
    delay_ms(1300);
    //delay_ms(200);    
    
    //delay_ms(3000);    
    
}


void main()                    //程序开始运行的入口
{
    //int a = 0;
    int a = 10;

    
    sys_init();                //USB功能+IO口初始化
    usb_init();                //usb库初始化
    EA = 1;                    //CPU开放中断,打开总中断。
    
    while(1)        //死循环
    {
        if( DeviceState != DEVSTATE_CONFIGURED )     //
            continue;
        if( bUsbOutReady )                                
        {
            usb_OUT_done();
            //printf("%03.3f\r\n",1.12);
            //printf("%u \r\n",1<<3);
            
            //printf("计算Add(1, 2)结果为:%d\r\n", Add(1, 2));
            //printf("计算Sub(5, 2)结果为:%d\r\n", Sub(5, 2));
            //printf("计算Mul(5, 3)结果为:%d\r\n", Mul(5, 3));
        }
        P40 = 0;    //三极管引脚输出低电平
        
        SOS_Led();

        //
        //P67 = 0;    //led7引脚输出低电平
        //
        //P60 = 0;    //led0引脚输出低电平
        //delay_ms(500);
        //
        //P67 = 1;
        //P60 = 1;
        //delay_ms(500);

    }
}


void sys_init()        //函数定义
{
    WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度

    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;   //设置为准双向口
    
    P3M0 = 0x00;
    P3M1 = 0x00;
    
    P3M0 &= ~0x03;
    P3M1 |= 0x03;

    //设置USB使用的时钟源
    IRC48MCR = 0x80;    //使能内部48M高速IRC
    while (!(IRC48MCR & 0x01));  //等待时钟稳定

    USBCLK = 0x00;    //使用CDC功能需要使用这两行,HID功能禁用这两行。
    USBCON = 0x90;
}


参考资料:
http://stcmcudata.com/
https://www.stcai.com/jxsp
演示视频
实验箱-STC32G12K128 教学视频
屠龙刀-STC32G12K128 教学视频


 文章来源地址https://www.toymoban.com/news/detail-525632.html

到了这里,关于20230705点亮STC32G实验箱9.6(STC32G12K128)开发板的跑马灯LED(深入了解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深度相机、实验箱、扫描仪、机器狗…… 奥比中光超强性能3D视觉应用亮相VALSE 2023

    6月10日-12日,VALSE 2023视觉与学习青年学者研讨会在江苏无锡举办,奥比中光作为金牌赞助商,携Femto Mega与Gemini 2系列3D相机以及3D视觉实验箱开发套件、手持3D扫描仪、四足机器狗等创新解决方案参展,为3D视觉开发者提供多样化的开发选择。 VALSE是计算机视觉、图像处理、模

    2024年02月09日
    浏览(85)
  • 用唐都实验箱通过微指令实现冒泡排序,原码一位乘和栈的相关操作

    摘要 1 前言 2 实验原理 2.1 数据格式 2.2 指令格式 2.3 数据通路框图 3 总体****设计 3.1 微指令流程图 3.2 指令系统 3.3 线路连接图 4 详细设****计 4.1 冒泡排序 4.2 原码一位乘 4.3 堆栈 5 实验结果 5.1 冒泡排序 5.2 原码一位乘 5.3堆栈 6 参考文献 摘要 本次课程设计首先对复杂模型机进

    2024年02月03日
    浏览(53)
  • ARM920T实验箱s3c2410 矩阵按键控制步进电机正反转和停止

    问题描述 按下第一个按键使步进电机可以正转、第二个反转反转、第三个按键停止 矩阵按键控制 画了张矩阵按键的内部电路图: 矩阵按键实物图: ABC 按键右边的就是步进电机。 按键第一行连接的是寄存器 GPFDAT0 的端口 第二行连接的是寄存器 GPFDAT2 的端口 第三行连接的是

    2024年02月09日
    浏览(46)
  • STC32G资料及入门介绍

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:这里可以添加本文要记录的大概内容: STC32G是STC新推出的32位单片机,也就是广义的32位的8051单片机。实际上使用的是Intel的C251架构,因此在编译器上KeilC51是编译不了STC32G的工程的,要使用KEIL

    2023年04月08日
    浏览(31)
  • STC32G单片机内置ADC及应用编程

          STC32G单片机内部集成了一个12位高速ADC转换器,ADC的最高时钟频率为系统频率的1/2。其输入通道多达15个(第15通道为专门测量内部1.19V参考信号源的通道),可分时切换使用。       STC15系列单片机内置ADC模块以电源电源作为ADC参考电压,STC32G的ADC模块则与之不同,它

    2024年02月09日
    浏览(77)
  • STM32G0x0系列-点亮一盏灯(寄存器)

    目录 输入功能 浮空输入:通俗讲就是让管脚什么都不接,悬空着。 上拉输入 下拉输入 模拟输入 输出功能 开漏输出 推挽输出 相关寄存器 GPIOx_MODER 端口模式寄存器 GPIOx_OTYPER 端口输出类型寄存器 GPIOx_ OSPEEDR 端口输出速度寄存器 GPIOx_PUPDR 上拉/下拉寄存器 GPIOx_IDR 端口输入数据

    2024年02月06日
    浏览(52)
  • 学习笔记|LED点亮原理|STC32G单片机视频开发教程(冲哥)|第四集-下:点亮LED

    新建工程时待选择的Device:如 STC32G12K128 Seies,需要先在下拉菜单中选择“STC MCU Database”,然后可以选择STC32G12K128 Seies了。 当前以上节课的代码为基础,经过精简后的代码(裸板未添加任何头文件): 需手工下载至开发板(屠龙刀三.1版)。 当前已实现功能:点亮P2^1端口的板

    2024年02月13日
    浏览(55)
  • 学习笔记|LED点亮原理|三极管在数字电路中的应用|Keil中的Tab设置|C51中对准双向口|STC32G单片机视频开发教程(冲哥)|第四集-上:点亮LED

    为什么LED能点亮? 概念引入:输出电压=VCC就是高电平,输出电压 =GND(一般是OV)就是低电平,分别用1和0来表示,这个是理想值。 现在STC 的带硬件USB的MCU支持用硬件USB下载,因为用的是USB-HID通信协议,不需要安装任何驱动。STC打狗棒、降龙棍、开天斧、屠龙刀核心板以及STC开

    2024年02月14日
    浏览(39)
  • STM32G030F6P6 芯片实验 (一)

    淘宝搞了几片, 没试过 G系列, 试试感觉. 先搞片小系统版: 套 STM32F103C8T6小系统板格式. (1) Ref 有点跳, 从 STM32F103C8T6 系统板改的, 没重编号. (2) Type-C 纯给电, 砍了 16pin的, 直接换 6pin的。 (3) 测试LED放 B2。 (4) 测试底板用原来 STM32F103C8T6的。 直接用嘉立创EDA画了板, EDA用起来还可以

    2024年02月08日
    浏览(42)
  • 【Stm32】【Lin通信协议】Lin通信点亮灯实验

    通过STM32的串口发送数据,然后通过串口转换模块将数据转换成LIN(Local Interconnect Network)协议,最终控制点亮灯。 需要工程和入门资料的可以私信我,看到了马上回。 入门书本推荐: 这个结构写成代码如下: 同步间隔段(Break Field) 是至少(注1)持续 13 位(以主机节点的位速率

    2024年02月05日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包