冲哥教程学习记录打卡
这个是了解试验箱硬件的学习过程,发在了交流区。
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=8030
以下继续学习,在打卡区持续记录。
第三集:
配置keil环境, 下载试验箱程序。
资料下载-->软件库函数及范例程序->STC32G试验箱程序。
芯片型号->STC32G12K128
keil仿真设置-> 添加型号和头文件到Keil中。
烧写:
芯片型号,扫描串口,打开hex程序,选择时钟,最后下载/编程。下载前有个按钮需要按一下。
线缆连接:
可以直接接电脑usb的d+,d-。
本帖最后由 durongze 于 2024-4-27 18:54 编辑
下载学习资料, 查看Example 中的例子,例子有30个:
0.DEMO
1.C语言Printf
10.矩阵按键
11.外部中断
12.IO中断
13.ADC采集
14.ADC应用
15.NTC温度采集
16.串口2通信
17.串口PC通信
18.CDC串口通信
19.看门狗
2.LED闪烁
20.比较器
21.内部EEPROM
22.DS18b20温度读取
23.软件模拟SPI
24.硬件SPI
25.SPI读写W25X40CL
26.软件IIC读写24C02
27.硬件IIC读写24C02
28.24C02串口读写器(移植)
29.单通道PWM输出编写
29.课前测试(定时器模拟PWM)
3.按键
30.任意频率的PWM输出和死区互补波形输出
4.蜂鸣器
4.蜂鸣器作业
5.seg静态显示1位
6.seg动态显示
7.定时器0
8.Count_T1
8.Count_T1_测速
9.TIM多任务
----------------------------
还未一一学习。下一个教程是点亮 led 。
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=323&extra=&page=1
本帖最后由 durongze 于 2024-4-27 19:16 编辑
第四集:
操作GPIO口,P0是0组,P0.0 是0组的0号脚。
通过视频的7:55知道Q11 ss8850的发射极是vcc,
如果要点亮led4,P4.0 需要低电平,P6.0也需要低电平。
通过视频的13:20, 将程序抄写下来,
工程配置里修改target输出hex文件。
按照第3集视频的烧写教程烧写,最后灯不亮,
需要将P0改为P4,
sfr P4 = 0xc0; // 定义P4寄存器
sfr P4M1 = 0xB3;//定义P4M1寄存器。
sfr P4M0 = 0xB4;
// 以上这3句是端口操作
sbit P40 = P4^0;// 三极管控制脚意思是在P4中定义一个位。
sbit P60 = P6^0;// led 控制脚
main :
P4M1= 0x00;//
P4M0= 0x00;
P4 = 0; 第五集:
使用 stc_usb_cdc_32g.lib
main :
sys_init
把P0-P7 设置为双向口
usb_init
printf("Hello world");
在软件界面,勾选下载完自动打开串口
学习二进制十六进制的转换。
本帖最后由 durongze 于 2024-4-27 19:48 编辑
第六集:
用delay_ms函数实现Led闪烁。
void delay_ms(u16 ms)
{
u16 i;
do{
i = MAIN_Fosc / 6000;
while(--i);
}while(--ms);
}
1. 学习 while(){};
2.学习do{}while();
第七集:
通过按键点灯。
P3.2 INT0 连接的是17
P3.3 INT1 连接的是18
if( KEY1 == 0)
{
delay_ms(10);
if( KEY1 == 0 )
{
printf("press key\r\n");
P60 = 0;
}
}
else
{
P60 = 1;
} 本帖最后由 durongze 于 2024-4-28 10:43 编辑
第八集:
有源蜂鸣器
if( KEY1 == 0)
{
delay_ms(10);
if(KEY1 == 0 )
{
while(KEY1 == 0 );
BEEP = !BEEP;
}
}
用第六集的定时器配合蜂鸣器可以实现电磁炉定时报警功能
目前蜂鸣器的响应实际都是直接延时,如果延时的过程中,有新的按键,应该是无法响应的。
第九集:
数码管
首先将0-9的数字对应的段位总结出来。
u8 SEG_Tab = { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 }; //0-9
if( KEY2 ==0 )
{
delay_ms(10);
if( KEY2 ==0 )
{
BEEP = 0;
delay_ms(10);
BEEP = 1;
}
}
上面的意思应该是,有按键按下超过10ms,就开启蜂鸣器,并且持续开10ms,
attach://42532.png attach://42533.png 第十集:
数码管动态显示
attach://42539.pngattach://42540.pngattach://42541.png 第十一集:
定时器
这里是中断号,后面写中断函数时,需要。
这个时中断函数的实现