asys 发表于 2024-7-14 22:46:16

屠龙刀开发板评测+学习笔记

本帖最后由 asys 于 2024-7-16 00:10 编辑

大家好 ,我申请的stc32屠龙刀开发板到了如图1
从左到右为屠龙刀,我自己做的开发板,stm32最小系统板
我觉得stc32相比于stm32最大的优势是可以直接虚拟串口,
可以直接usb下载,这点对小白真的很有好。还省去了一个link的钱。
还有就是stc32的外围电路真的很少 ,最小系统板就比stm32简介了很多

拿到板子插电按住p3.2之后按一下rst就可以进usb下载模式了如图2


这里衔接我上次发的学习笔记

asys 发表于 2024-7-14 23:23:18

接下来是第八集是蜂鸣器的应用
第一个是蜂鸣器的区别
区别1、有源蜂鸣器内部带震荡源,所以只要一通电就会叫,而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。
2、价格不同,有源蜂鸣器要比无源蜂鸣器贵,贵在里面多了震荡源。
第二个是蜂鸣器的控制原理
使用三极管来当作开关 这里用的是三极管的开关作用(截至时断开 ,饱和时闭合)
视频中为pnp三极管

V基极<V发射极为饱和状态集电极与发射极之间的电压降应该很小通常小于0.2至0.3伏特
当单片机io为低电平的时候则蜂鸣器启动
当单片机io为高电平的时候则蜂鸣器关闭

接下来用了蜂鸣器来做了一个电磁炉的按键提示音

大概是这样在一个活动完成之后就可以控制蜂鸣器发出一个声音   来表示走到这一步了

可以用这个来调试在存疑的地方放一个提示音来看是否代码会跳到这里

asys 发表于 2024-7-14 23:43:54

我看后面需要用数码管emmm我没有数码管emmm唯一有数码管的51开发板还在家里面emmm只有往下做了

asys 发表于 2024-7-16 00:04:54

本帖最后由 asys 于 2024-7-16 00:10 编辑

今天看了冲哥讲定时器
非常生动有趣的引入了定时器的概念

定时器是定时器和计数器的统称。
1)设置为定时器时,可实现硬件计时,或者使程序每隔一固定时间完成一项操作
2)设置为计数器时候能够对脉冲进行计数
3)替代长时间的delay,提高CPU的运行效率和处理速度,能及时的响应某个事件
这里可以看手册的介绍
STC32G 系列单片机内部设置了 5 个 24 位定时器/计数器(8 位预分频+16 位计数),5 个 16 位定时器
T0、T1、T2、T3 和 T4 都具有计数方式和定时方式两种工作方式

在特殊功能寄存器 TMOD 中相对应的控制位 C/T 来选择 T0 或 T1 为定时器还是计数器。

对定时器/计数器 T2,用特殊功能寄存器 AUXR中的控制位T2_C/T 来选择T2为定时器还是计数器

定时器/计数器的核 心部件是一个加法计数器,其本质是对脉冲进行计数。只是计数脉冲来源不同
   
辅助寄存器auxr可以设置12分频或者不分频如果分频的话那来十二个时钟脉冲才是计数1因为auxr只提供了12分频和1分频两个选项

通过框图(图3)



我们可以看到cpu时钟先通过定时器的8 位预分频寄存器

再通过auxr辅助寄存器进行分频   也就是它通过了俩个分频   
当 C/T=0 时,多路开关连接到系统时钟的分频输出
这个时候使用内部时钟的脉冲来计数
T1 工作在 1T 模式(AUXR.6/T1x12=1)
时的输出时钟频率 = (SYSclk)/(TM1PS+1)/(256-TH1)/2
T1 工作在 12T 模式(AUXR.6/T1x12=0)时的输出时钟频率 = (SYSclk)/(TM1PS+1)/12/(256-TH1)/2


通过手册我们可以看到当T1 工作在 12T 模式下时其实是格外的又进行了12分频

这里可以对比一下arm定时器的结构框图看图4

arm和stc的区别就体现出来了这里stc多了一个aurx   而arm的。内部时钟路径是
内部时钟源到psc预分频    到计数器   计数器的数与arr自动重载计数器比较
可以在超过时清零并向cpu发起中断请求

我们可以通过写入定时器 0 计数寄存器的来自己设定 计算公式参考


图6

计数的多少
当定时器 1 在16 位自动重装载模式时,的溢出不仅置位 TF1,
而且会自动 将的内容重新装入



上面你已经学会了计数器的使用
现在我们来学习如何开启定时器

我们现在看图7

为定时器的控制寄存器
TR1:定时器T1的运行控制位。当GATE(TMOD.7)=1,TR1=1且INT1输入高电平时,才允许T1 计数。
TF0:T0溢出中断标志。定时器溢出时置1    我们可以在中断服务函数里刚开始就把这个位置0

现在不加中断的一个完整的定时器设置是这样的
1设置定时器的时钟系统
2设置定时器模式

3设置定时初始值
4清除中断标志

5定时器开始计时



现在我们来学习如何向cpu发起中断请求
一条完整的中断线连接是怎么样的   还是来看手册看到图3



在TF0之后中断信号走向了interrupt 那之后呢
看手册STC32G 中断及中断优先级结构图(图8)


我们可以看见定时器0的中断允许控制是ET0    同时我们还可以对中断的优先级进行配置    原理就拨动对开关来连接中断线
在最后我们开启EA总中断到此为止整个中断线已经完全打通
对应操作为      ET0 = 1;          EA=1;
最后处理中断函数部分
void 函数名称(void) interrupt 中断号
{
清中断标志;
}


函数名称可以随便写但是中断号不行
中断号位于STC32G 系列中断向量地址及同级中断优先级中断查询次序表


我们可以在这里看次序这个就是中断号

注意中断号超过31的C语言中断服务程序不能直接用interrupt声明,
请参考“开发环境的建 立与ISP下载”章节中的“关于中断号大于31在Keil中编译出错的处理”小节的处理方 法
。汇编语言不受影响

到此定时器部分到此结束

我又跑回去看来一下stc32g的手册才写出来的emmmm


江上酒酒 发表于 2024-10-6 22:57:53

asys 发表于 2024-7-16 00:04
今天看了冲哥讲定时器
非常生动有趣的引入了定时器的概念



总结的很认真
页: [1]
查看完整版本: 屠龙刀开发板评测+学习笔记