单片机学徒 发表于 2024-12-7 18:41:21

《8051U深度入门到32位51大型实战教学视频》学习笔记

之前兑换了芯片准备搭建最小系统板,还没发货时发现秦天柱也可以积分兑换了,果断兑换一个。两个都已到货。
开启跟冲哥的学习之路。


单片机学徒 发表于 2024-12-7 18:46:52

第一集: 序言
8051U优势:
1、屏幕显示和视频播放功能
2、IIS录放音
3、PWM_DMA
4、频谱分析仪(上位机)
5、手写计算器
6、QSPI,PWM移相,硬件乘除,单精度浮点

单片机学徒 发表于 2024-12-7 18:46:56

第一集: 序言
8051U优势:
1、屏幕显示和视频播放功能
2、IIS录放音
3、PWM_DMA
4、频谱分析仪(上位机)
5、手写计算器
6、QSPI,PWM移相,硬件乘除,单精度浮点

单片机学徒 发表于 2024-12-7 18:50:52

第二集 硬件及工具介绍
没有试验箱,用兑换的擎天柱开始对应学习,待有实验箱时,再回头重新学习一下{:4_165:}

单片机学徒 发表于 2024-12-8 18:25:06

第三集 点亮第一个LED

工程设置
擎天柱的led焊接再P2引脚上,所以代码修改为P2

点亮LED代码

运行效果

下载程序时需要按着P32后通电进入下载模式



单片机学徒 发表于 2024-12-8 19:02:36

第四集 :USB不停电下载

操作流程
1、 添加头文件“stc32_stc8_usb.h”


2、 USB初始化函数(lib+.h库实现)

3、 命令参数

    char *USER_DEVICEDESC = NULL;
    char *USER_PRODUCTDESC = NULL;
    char *USER_STCISPCMD = "@STCISP#";

4、 打开P_SW2寄存器和IE2寄存器(只打开一个位!)

   P_SW2 |= 0x80;
   IE2 |= 0x80;


USB和中断相关

      usb_init();   //USB CDC 接口配置
       IE2 |= 0x80;    //使能USB中断
       EA = 1;    //IE |= 0X80;
       
   while (DeviceState != DEVSTATE_CONFIGURED);   //等待USB完成配置
       

单片机学徒 发表于 2024-12-8 20:53:09

第五集 C语言基础
1.打开USB库中的PRINTF_HID宏定义(去掉//)
       #define PRINTF_HID            //printf输出直接重定向到USB HID接口
2.理解PRINTF的函数原型的定义
    #define printfprintf_hid
    int printf_hid (const char *fmt, ...);
    参数fmt -- 是格式控制字符串,包含了两种类型的对象:普通字符和转换说明 。
    普通字符:在输出时,普通字符将原样不动地复制到标准输出。
   printf("8051U深度入门到32位51大型实战视频\r\n");

转换说明:不直接输出,用于控制 printf 中参数的转换和打印。每个转换说明都由一个百分号字符(%)开始,以转换说明符结束,从而说明输出数据的类型、宽度、精度等。
      printf("8051U深度入门到32位51大型实战视频,%s\r\n","加油");

转换说明简介:
   1、类型:根据不同的 fmt 字符串,函数可能需要一系列的附加参数,每个
参数包含了一个要被插入的值,替换了 fmt 参数中指定的每个 % 标签。
关于附加参数,既可以是变量,也可以是常量。
    2、位置:printf()函数的普通字符和转换说明放在" "双引号内,附加参数
放在双引号外,每个附加参数之间用逗号隔开。
    3、数量:printf() 的附加参数与转换说明符是⼀⼀对应关系,如果有 n 个转
换说明符, printf() 的参数就应该有 n + 1 个。如果参数个数少于对应的转
换说明符,printf() 可能会输出内存中的任意值。






单片机学徒 发表于 2024-12-8 22:02:04

<p>第六课 I/O 输入输出<br />
任务一、二</p>
<video controls="controls" src="forum.php?mod=attachment&amp;aid=70604"></video>
<p>任务三<br />
修改成P2整体灯的亮灭了</p>
<p><img src="data/attachment/forum/202412/08/220156km6yypzyh6y7pdu7.png" alt="任务三.png" title="任务三.png" /></p>
<video controls="controls" src="forum.php?mod=attachment&amp;aid=70605"></video>

单片机学徒 发表于 2024-12-22 18:14:05


第七课 定时器中断

定时器作用:
    (1) 用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作
    (2) 替代长时间的Delay,提高程序的运行效率和处理速度(可以打断主循环)

定时频率(𝐻𝑍)=("Sysclk" ("hz" ))/((𝑇𝑀0𝑃𝑆+1)(65536−[𝑇𝐻0,𝑇𝐿0])∗𝑇)
定时时间(s)=((𝑇𝑀0𝑃𝑆+1)(65536−[𝑇𝐻0,𝑇𝐿0])∗𝑇)/("Sysclk" ("hz" ))
[𝑇𝐻0,𝑇𝐿0]=65536−("Sysclk" ("hz" )∗定时时间(s))/(𝑇∗(𝑇𝑀0𝑃𝑆+1))
𝑇=1或者12。
16位自动重载定时器的本质就是从设定值数到65536(溢出)之后置位一次标志位,如果使能ET0就可以进入中断!

定义:包含返回值,函数名和入口参数,并定义了函数具体功能。
    函数的名称应当能够描述函数的功能,便于代码的阅读和理解。
    函数名称应当使用有意义的英文单词或者组合的英文单词,避免使用特殊字符或数字。
    函数名称不能与C语言的关键字同名。
声明:在头文件或者被调用之前使用,注意末尾要加分号
调用:在需要调用的地方直接使用函数名,加上括号和分号。如果有入口参数的,需要在括号的多个参数之间加逗号隔开。





单片机学徒 发表于 2024-12-24 11:34:22

第八集定时器周期性调度任务
一、数组使用分为如下两步
   

    1、定义
    类型 名称[长度] = { 数值 };
    2、使用
    赋值:名称[索引] = 数值

二、创建程序文件三步,把硬件需要的初始化弄一个config.c
    1、新建文件并保存      
               新建xxx.c和xxx.h文件,代表一个功能块。
             xxx.h格式
            #ifndef __XXX_H
            #define __XXX_H

            调用头文件
            函数声明...
            #endif



         xxx.c格式
            #include “xxx.h”
            函数定义

    2、添加到工程         
    3、添加引用路径


很重要的经验和思路

注意事项:
按键不能在通过while判断是否按下松开了
可以通过按键按下计数






页: [1] 2
查看完整版本: 《8051U深度入门到32位51大型实战教学视频》学习笔记