SSZ_STCMCU
发表于 2023-8-21 09:09:06
本帖最后由 SSZ_STCMCU 于 2023-8-29 10:07 编辑
看介绍应该还能赶上吧,有实验箱用肯定事半功倍{:lol:}
STC32G单片机开发,视频教程第一集:认识单片机:
单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
用途:仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域仪器仪表;
开始了解了单片机是什么,学习了它的内部结构,以及在生活中的广泛应用。我们讨论了学习单片机的顾虑,并鼓励有兴趣的读者可以尝试学习。
STC32G单片机视频开发教程第二集:了解硬件:
看到了实验箱的样子,正是这个实验箱让我们决定踏入单片机学习的领域。我们可以自己做一些小实验,体验这个神奇的世界,也许我们就会有自己的创新产品。
STC32G单片机视频开发教程第三集:开发环境搭建和程序下载:
学习了基础工具的使用和安装,这不是问题。
第四集:建立工程点亮第一颗LED上:
LED的亮灭?通电亮,什么时候通电(单片机来控制),简单的逻辑控制就出现了。
跟着教程建立了工程,并成功编译了代码。虽然没有立即验证板子,但我们理解了简单的程序。
硬件连接完成,给出相应的电压即可(引脚输出低电平/高电平)。
第四集:建立工程点亮第一颗LED下,USB-CDC/虚拟串口,不停电下载,高手必须懂:
学习了不间断电下载的方法,看了源码,虽说东西不多,但理解还是有点难度。
资料里面有demo,编译通过,留作后用。
第五集:C语言运算符和进制数入门上:
第五集:C语言运算符和进制数入门下:
printf("Hello World!");
学习了经典的“你好世界”例子,这是printf的基本用法。我们复习了进制的概念,包括二进制、十进制和十六进制。
常用格式化字符(%d:十进制整数,%f:单精度浮点,%x:十六进制整数)
二进制 八进制 十进制 十六进制
1111 17 15 F
数据的基本类型:
在巩固知识的一集中,我们温习了进制、运算符和数据类型。
第六集:LED闪烁和花式点灯上:
第六集:LED闪烁和花式点灯下:
学习了延迟函数的应用,并考虑创建一个自己的常用函数库,或者直接使用现有的库。
在模块化编程的概念中,我们学习了如何组织代码,使其更加清晰和可维护。
代码格式示例(标准的延迟函数,可根据须要定制修改,注意延迟的精度问题):
#define MAIN_Fosc 24000000UL
void delay_ms(u16 ms)
{
u16 i;
do
{
i = MAIN_Fosc/6000;
while(--i);
}
while(--ms);
}
第七集:按键点灯上:
第七集:按键点灯下:
按键种类:
虽然按键长得千奇百怪,但是本质就是两个引脚之间的通断。
按键原理及防抖
深入了解了按键的原理和应用,包括按键消抖的过程。我们了解到可以通过按键实现多种控制,并开始考虑如何将这些技术应用到实际项目中。
进一步探索了按键控制的应用,开始引入数组的概念,以便在按键较多时进行编码,方便在其他地方使用。
第八集:蜂鸣器的应用:
主要区别:是否有震荡源,还有价格。
学习了蜂鸣器的使用,包括有源和无源蜂鸣器的区别。我们还通过按键控制实现了电磁炉的基本功能,进一步理解了电气系统的操作过程。
第八集:作业:
讲解了电磁炉的例子,通过分块讲解加深了对常用功能的理解。
第九集:数码管的静态使用:
数码管:实际就是将一些发光二极管封装在一起。
显示除了数码管,还有液晶屏、异型显示屏等。
学习了数码管静态显示的使用,利用之前学过的进制、数组、延迟和蜂鸣器等知识。
静态显示简单理解就是,让他怎么亮就怎么亮很听话的那种。
第十集:数码管的动态显示:
学习了数码管动态显示的方法,这种技术通过利用人眼的视觉暂留效应,实现了全亮的显示效果,大大扩展了数码管的使用可能性。
可以自己做个挑战10秒,留个后门,连点3次必中10秒{:lol:}(哈哈哈)。
第十一集:定时器的使用:
STC32系列单片机内部设置了5个24位定时器/计数器(8位预分频+16位计数)。5个16位定时器T0-T4都具有计数方式和定时方式两种工作方式。
其核心部件是一个加法计数器,其本质是对脉冲进行计数。
手册14.2.2 定时器0/1模式寄存器(TMOD)
符号 地址 B7 B6 B5 B4 B3 B2 B1 B0
TMOD 89H T1_GATE T1_C/T T1_M1 T1_M0 T0_GATE T0_C/T T0_M1 T0_M0
T0_C/T :
0:定时器
1:计数器
EA:总中断,ET0:溢出中断允许位,0是禁止T0,1是允许T0。
学习了定时器/计数器的使用,以及计数器的实际应用。
第十二集:计数器的使用:
按键模拟波形说明码盘的控制原理;
16位自动重装模式,定时器1计数器寄存器(TL1,TH1)
符号 地址 B7 B6 B5 B4 B3 B2 B1 B0
TL1 8BH
TH1 8DH
学习了计数器的使用方法,并举例说明了它在实际项目中的应用。
第十三集:简易多任务处理上:
第十三集:简易多任务处理中:
第十三集:简易多任务处理下:
第十三集:简易多任务处理终:
总结之前的学习内容(GPIO和IM的用法),然后拨乱反正(让代码看起来更好看,思路更清晰);
函数标准化注释模板
//========================================================================
// 函数名称:
// 函数功能:
// 入口参数: @
// 函数返回:
// 当前版本: VER1.0
// 修改日期: 2023
//当前作者:
// 其他备注:
//========================================================================
创建程序三步:新建保存、添加到工程、添加引用路径
函数定义三步:定义、声明、调用
引入编程模块(LED、KEY、BEEP、TIME),将每个功能分别封装成一个独立文件,注重书写规范和编程思想的建立。
第十四集:矩阵按键:
在按键数量较多时,为了减少I/O口的占用,将按键排列成矩阵排列的形式的按键阵列我们称位矩阵按键。
优点:省IO口
缺点:程序复杂
学习了矩形按键的控制原理,通过定时行列扫描输入信号的方式,有效减少了IO占用的问题。
STC有64脚STC单片机中,由于IO足够多,对于简单的项目已经足够使用。
第十五集:外部中断:
中断系统(中途打断),为了使CPU具有对外界紧急事件的实时处理能力而设置的。
没有中断的话,系统一直循环执行同样的命令,对于一般重复性场景可能影响不大,但如果常在河边走哪有不湿鞋,
一旦设备有个故障(即使很小),可能也会要了整条生产线的命。
打断的因素可以很多,可以通过优先级来管理,爸爸妈妈外公外婆同时要你拿东西,你会怎么选?请排序。。。
STC-ISP越来越贴心了,提供了的功能越来越好用了。
第十六集:IO中断:
普通I/O口均可中断,不是传统外部中断,支持4种中断模式(下降沿中断、上升中断、低电平中断、高电平中断),每个I/O可独立设置中断模式。
STC32GK28-Beta的普通I/O下降沿中断段和上升沿中断暂时不要使用(可以直接跳过这个Beta的芯片或者直接用高低电平中断)。
端口的配置模式:PnIM1.x 和 PnIM0.x【Pn.x中断模式】 端口中断使能PnINTE.x:0关闭 1使能
0 0 下降沿中断
0 1 上升沿中断
1 0 低电平中断
1 1 高电平中断
P2口的低电平中断:
P2IM0 = 0x00; //低电平中断设置
P2IM1 = 0xFF;
P2INTE = 0xFF; //使能P2口中断(进入时先清空P2INTE = 0x00;)
EA = 1; //打开总中断
中断口大于31的处理:
热心网友提供的软件:拓展Keil的C代码中断号(支持0~254)
或者跳转到未使用的中断号(类似嫁接)
数码管和中断的优先级:解决了数码管显示问题(定时器优先级高于按键按下中断)
实战:密码锁(获取想要的基础数据信息(用户到底按下了哪个按键),然后加入逻辑判断,一个小程序成型了);
第十七集:模数转换器ADC上:
第十七集:模数转换器ADC下:
模数转换器就是A/D转换器(将模拟信号转变为数字信号的电子元件)。
使用ADC功能时有Vref引脚的单片机千万千万千万不能悬空,必须接外部参考电压源或者VCC!!!
ADC相关寄存器:
ADC_CONTR(控制寄存器):ADC_POWER(电源控制位)、ADC_START(启动控制位)、DC_FLAG(转换结束标志位,必须手动清零)
15个引脚可以用ADC功能。
ADCCFG(配置寄存器) :RESFMT(ADC转换格式控制为,0:左对齐 1:右对齐)、SPEED(ADC时钟,简易慢点)。
ADCTIM(时序控制寄存器):注意SMPDUTY 一定不能小于01010B。
ADC转换结果和反推公式
基准电压源(更高精度的ADC,独立的外部电压源,经典电路TL431)
初始化过程:
设置源(采集所用的引脚)---》设置时序---》配置对齐方式---》开启电源控制位
查询法:
启动AD转换---》2个命令延迟---》查询ADC完成标志位(用完清除)---》读取ADC结果
中断法:
设置ADC(检测引脚、内部时序、时钟)---》使能ADC---》打开ADC中断(和总中断)---》启动AD转换
进入中断后(清除完成标志位)---》读取ADC结果---》继续
ADC的15通道有个不随芯片工作电压改变影响的稳定内部信号源(约1.19V),用作反推外部电压。
到这里,内容都能听懂,但脑袋里的???越来越多,准备放慢节奏,慢慢看几遍。
第十八集:ADC采集电源电压和ADC按键上:
第十八集:ADC采集电源电压和ADC按键中:
第十八集:ADC采集电源电压和ADC按键下:
反推:基准电源电压(ADC15通道的固定输入信号源1.19V),如何提高测量精度?
按钮复用,12位ADC按键检测(16个按键一个IO搞定),最多可以采集多少个按键呢?
再多的按键采集应该可以实现,但是间距太小估计准确性会堪忧(不知道理解的对不对呢)?
实战,移动到最右端数码管后,再移动全亮?程序需要继续修改......
第十九集:NTC温度采集:
NTC(Negative Temperature Coefficient):可以随着温度上升电阻呈现指数关系减小、具有负温度系数的热敏电阻现象和材料。
原理:半导体特性,温度和电阻建立联系(成一定比例划分对应的表格)。
NTC温度计原理很简单(做成体温枪怎么样呢,用NTC直接接触式测量,采集1分钟取有效数据)。
第十九集:串口通信上:
第十九集:串口通信下:
NTC
第二十一集:串口应用上:
第二十一集:串口应用下:
NTC
行知无涯
发表于 2023-8-21 22:35:38
打卡第九集。
xushu
发表于 2023-8-21 22:49:25
已看完第六集上。冲哥讲解delay与while do的用法。晕乎!{:4_174:{:4_167:}
清风予我
发表于 2023-8-22 08:36:01
xushu 发表于 2023-8-21 22:49
已看完第六集上。冲哥讲解delay与while do的用法。晕乎!{:4_174:
加油{:4_175:}
HL_DPJMCU
发表于 2023-8-22 10:22:42
重新编辑过提示要审核,帖子怎么丢了
xushu
发表于 2023-8-22 10:48:44
已看完第六集下。看来我还得先熟悉下C语言的命令语句。
清风予我
发表于 2023-8-22 11:04:33
HL_DPJMCU 发表于 2023-8-22 10:22
重新编辑过提示要审核,帖子怎么丢了
审核中,稍等
tang01
发表于 2023-8-22 11:44:07
本帖最后由 tang01 于 2023-8-22 12:57 编辑
大学生分在校生与毕业生,其实研究生和在科研沾边的工作社会自然人,也是大学生,也包括老师,各个领域的人,只要是能够用起STC32或STC单片机的都有机会,不管是不是大学生,也不管是不是在校,只要能对stc有益的、有技术推进作用的、贡献的,并且被STC官方承认的人,就要资格领走1000~20万不等奖金。不要只盯着在校大学生,他们虽然有活力,但基础不牢,考虑问题不全,设计的产品简单而单调,当然创意永远是第一位,培养创意人才至关重要,对在校大学生资源倾斜在所难免
sanyang
发表于 2023-8-22 18:57:37
第16集: IO中断
变通IO口均可中断,不是传统外部中断。STC32G系列支持所有的IO中断,且支持4种中断模式:下降沿、上升沿、低电平、高电平中断,每组IO口都有独立的中断入口地址,且每个IO可独立设置中断模式。
sanyang
发表于 2023-8-22 20:16:50
第17集:ADC模数转换
STC32G系列单片机内部集成了一个12位高速A/D转换器。ADC的时钟频率为系统频率2分频再经用户设置的分频数进行再次分频。
ADC转换结果的数据格式有两种:左对齐和右对齐。
ADC的第15通道是专门测量内部1.19V参考信号源的通道。参考信号源出厂时校准为1.19V,大约有1%的误差。
如将ADC_VREF+短接到MCU-VCC,就可以反推MCU-VCC的电压。
如芯片有ADC的外部参考电源管脚ADC_VREF+,则一定不能浮空,必须接外部参考电源或者直接连到VCC。
ADC控制寄存器ADC_CONTR
ADC_POWER:ADC电源控制位,0:关闭ADC电源,1:打开ADC电源,建议进入空闲模式和掉电模式前将ADC电源关闭,以降低功耗。
特别注意:1、给MCU的内部ADC模块电源打开后,需等待约1ms,等MCU内部的ADC电源稳定后再让ADC工作。
2、适当加长对外部信号的采样时间,就是对ADC内部采样保持电容的充电或放电时间,时间够,内部才能和外部电势相等。
ADC_START:ADC转换控制位。写入1开始ADC转换,转换完成后硬件自动将此位清零。
0:无影响,即使ADC已开始转换工作,写0也不会停止AD转换。1:开始转换,转换完成后硬件自动将此位清零。
ADC_FLAG:转换结束标志位。当ADC完成一次转换后,硬件会自动将此位置1,并向CPU发出中断请求。此标志必须软件清零。
ADC_EPWMT:使能PWM实时触发ADC功能。
ADC_CHS:ADC模拟通道选择位,被选择为ADC输入通道的IO口,必须设置PxM0/PxM1寄存器将IO口模式设置为高阻输入模式,另外,
如果MCU进入掉电模式/时钟停振模式后,仍需要使能ADC通道。则需要设置PxIE寄存器关闭数字输入通道。以防止外部模拟
输入信号忽高忽低面产生额外的功耗。
ADC配置寄存器ADCCFG
RESFMT:ADC转换结果格式控制位,0:结果左对齐,ADC_RES保存结果的高8位,ADC_RESL保存结果的低4位。
1:结果右对齐,ADC_RES保存结果的高4位,ADC_RESL保存结果的低8位。
SPEED:设置ADC时钟。FADC=SYSclk/2/(SPEED+1)
ADC时序控制寄存器