科学妞妞 发表于 2024-4-19 12:04:34

好学天上 发表于 2024-4-18 15:23
第四集 点灯打卡

不知道为啥看视频一直卡住,刷新一下动一下,网速应该是没问题的呀 ...

好好学

科学妞妞 发表于 2024-4-19 12:04:56

孙大圣 发表于 2024-4-18 10:11
还能申请试验箱吗

好好学

科学妞妞 发表于 2024-4-19 12:05:19

科学妞妞 发表于 2024-4-18 08:03
希望冲哥教程尽快更新,期待学习更多的知识,同意你的建议,一起希望

好好学

yzk_hi 发表于 2024-4-19 15:57:58

本帖最后由 yzk_hi 于 2024-4-19 16:02 编辑

第三集跟着冲哥搭建开发环境 这应该是开发单片机最基础的东西了

好学天上 发表于 2024-4-20 11:40:12

第六集打卡滴滴滴 打卡贴STC32G128K芯片学习打卡贴
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=7834
(出处: 国芯论坛-STC全球32位8051爱好者互助交流社区)

bnnpyuvtkd 发表于 2024-4-21 09:25:49


冲哥STC32G单片机视频教程_笔记
        第一集到第三集跳过。
       
第四集上:建立工程点亮第一颗LED灯上
第四集下:建立工程点亮第一颗LED灯下
        硬件电路(略)
        软件:
        在桌面上新建文件夹0.DEMO,打开keil251,新建工程Demo保存到0.DEMO中,选择芯片类型为STC MCU,芯片型号为STC32G12K128,新建.c文件,命名为Demo.c,将Demo.c保存到0.DEMO中,把Demo.c文件添加到Demo工程中。
        编写Demo.c文件,
#include "COMM/stc.h"                //调用头文件
#include "COMM/usb.h"

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 main()                                        //程序开始运行的入口
{
        sys_init();                                //USB功能+IO口初始化
        usb_init();                                //usb库初始化
        EA = 1;                                        //CPU开放中断,打开总中断。
       
        while(1)                //死循环
        {
                P40 = 0;        //三极管引脚输出低电平
                P60 = 0;        //led4引脚输出低电平
                P61 = 0;        //led5引脚输出低电平
        }
}
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;
}
在冲哥_教学视频配套附件-20230731中的任意一个例程中找到COMM文件夹,复制到所建的工程文件夹中,把COMM文件夹中的文件添加到工程中。
       
第五集:C语言运算符和进制数入门上
        1.C语言 printf函数的实现
首先实现函数printf的打印输出,要实现printf打印输出,要在程序主函数中添加
                if( DeviceState != DEVSTATE_CONFIGURED )         //判断USB是否连接成功
                        continue;
                if( bUsbOutReady )                                                                //判断有没有接收到数据
                {
                        usb_OUT_done();
                }
语句,程序为:
#include "COMM/stc.h"                //调用头文件
#include "COMM/usb.h"

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 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;        //led4引脚输出低电平
                P61 = 0;        //led5引脚输出低电平
        }
}


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;
}
结束。

第五集:C语言运算符和进制数入门下
2、首先自学一下Excel的应用,然后跟着老师学习一下2进制、10进制、16进制之间的转换。
3、单片机C语言中常用的运算符:
        一、算术运算符
加(+)减(—)乘(*)除(/)
模(余)运算符(%):不允许出现浮点型,余数正负取决于被除数正负
自增(++i,–i;i++,i–)
二、位运算符
右移(>>)左移(<<)
按位与(&)
按位或(|)
按位异或(^)
取反(~)
        三、赋值运算符
+= 加赋值(a += 3等价于 a = a + 3)
-= 减赋值
*= 乘赋值
/= 除赋值
%= 求余赋值
&= 按位与赋值
|= 按位或赋值
^= 按位异或赋值
<<= 左移位赋值(>>= 右移位赋值)
        4.数据的基本类型
Data Types        Bits        Bytes        Value Range
bit        1                0 to 1
aigned char        8        1        -128 -- +127
unsigned char        8        1        0 -- 255
enum        8/16        1or2        -128 -- +127 or -32768-- +32767
sigend short int        16        2        -32768 -- +32767
unsigned short int        16        2        0 -- 65535
signed int        16        2        -32768 -- +32767
unsigned int        16        2        0 -- 65535
signed lont int        32        4        -2147483648 -- +2147483647
unsigned long int        32        4        0 -- 4294967295
float        32        4        +-1.175497E-38 -- +-3.402823E
double        32        4        +-1.175497E-38 -- +-3.402823E
sbit        1                0 or 1
sfr        8        1        0 -- 255
sfr16        16        2        0 -- 65535

五、课堂总结
1.学会printf的格式化输出(后面会反复用到)
2.了解进制数
3.学会加减乘除等运算符
4.了解数据类型和数值范围
课后练习:自己练习一下printf的用法
       
第六集:LED闪烁和花式点灯上。
1、        基于Delay实现的LED闪烁。
2、        函数的应用。
3、        新建文件夹,使用模块化编程。
1,        基于Delay实现的LED闪烁。
首先用宏定义主时钟
#defineMAIN_Fosc24000000UL                        //定义一个IRC系统时钟
        语法分析:

        延时函数如下:
void delsy_ms(u16ms)
{
        u16i;
        do
        {
                i = MAIN_Fosc / 6000;
                while(--i);
        }while(--ms);
}
2.函数的使用
在模块化编程里,函数使用分为如下三步:
1.函数定义
返回值 函数名称( 入口参数 )
{
函数要执行的功能
}
@返回值:没有返回值就是void
@函数名称:避开关键词,不重复,非特殊字符随便取
@入口参数:类型+名称,多个参数“,”分开,空就写void
2.函数声明
返回值 函数名称( 入口参数 );
3.函数调用
函数名称( 入口参数 );
主函数如下:
void main()
{
        sys_init();                //USB功能+IO口初始化
        usb_init();                //usb库初始化
        EA=1;

        while(1)
        {
                if(DeviceState != DEVSTATE_CONFIGURED)
                continue;
                if(bUsboutReady)
                {
                        usb_OUT_done();
                }
        P40 = 0;                //三极管引脚输出低电平

        P60 = 0;                //led4引脚输出低电平
        delay_ms(500);
        P60 = 1;
        delay_ms(500);
        }
}
        在Demo.c中加入头文件
#include "COMM/stc.h"
#include "COMM/usb.h"
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
3.新建文件,使用模块化编程
        新建xxx.c和xxx.h文件,代表一个功能块。
xxx.h格式:
#ifndef __XXX_H
#define __XXX_H
调用头文件
函数声明...
#endif
xxx.c格式
#include “xxx.h”
函数定义
添加文件一定要记得引用路径和添加到工程里。



bnnpyuvtkd 发表于 2024-4-21 09:34:02

我已经听了五课,怎么获得STC32G12K128-实验箱-V9.6试验箱?

科学妞妞 发表于 2024-4-21 21:29:58

zhaoye818 发表于 2024-4-21 18:10
加油

加油

科学妞妞 发表于 2024-4-21 21:30:25

zhaoye818 发表于 2024-4-21 15:01
第十二集学习笔记:1、计数器用途 马达计数 咖啡机编码器 脉冲计数 2、配置 T1-C/T为1 T1-GATE为0 TR1为1...

加油

科学妞妞 发表于 2024-4-21 21:31:38

zhaoye818 发表于 2024-4-19 15:49
第八集学习笔记:蜂鸣器 1、有源和无源两种 2、控制原理 低电平鸣响 3、电磁炉应用 三个按键八个LED 一个蜂 ...

下载视频多看看,画画流程图,好办法
页: 167 168 169 170 171 172 173 174 175 176 [177] 178 179 180 181 182 183 184 185 186
查看完整版本: 视频教学:《32位8051单片机原理及应用》,一等奖2万, 送实验箱; 冲哥版