《8051U深度入门到32位51大型实战教学视频》学习笔记
之前兑换了芯片准备搭建最小系统板,还没发货时发现秦天柱也可以积分兑换了,果断兑换一个。两个都已到货。开启跟冲哥的学习之路。
第一集: 序言
8051U优势:
1、屏幕显示和视频播放功能
2、IIS录放音
3、PWM_DMA
4、频谱分析仪(上位机)
5、手写计算器
6、QSPI,PWM移相,硬件乘除,单精度浮点 第一集: 序言
8051U优势:
1、屏幕显示和视频播放功能
2、IIS录放音
3、PWM_DMA
4、频谱分析仪(上位机)
5、手写计算器
6、QSPI,PWM移相,硬件乘除,单精度浮点 第二集 硬件及工具介绍
没有试验箱,用兑换的擎天柱开始对应学习,待有实验箱时,再回头重新学习一下{:4_165:}
第三集 点亮第一个LED
工程设置
擎天柱的led焊接再P2引脚上,所以代码修改为P2
点亮LED代码
运行效果
下载程序时需要按着P32后通电进入下载模式
第四集 :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完成配置
第五集 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() 可能会输出内存中的任意值。
<p>第六课 I/O 输入输出<br />
任务一、二</p>
<video controls="controls" src="forum.php?mod=attachment&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&aid=70605"></video>
第七课 定时器中断
定时器作用:
(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语言的关键字同名。
声明:在头文件或者被调用之前使用,注意末尾要加分号
调用:在需要调用的地方直接使用函数名,加上括号和分号。如果有入口参数的,需要在括号的多个参数之间加逗号隔开。
第八集定时器周期性调度任务
一、数组使用分为如下两步
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