STC32G12K128学习打卡帖
本帖最后由 duyi324 于 2023-12-5 09:27 编辑之前只是大概的体验了一下 STC32G12K128 单片机的固件库,为了参与一下官方实验箱活动,从今天开始视频打卡~
每个人基础不一样,本贴基本都是记录了我个人认为的重点,或者之前不熟悉的知识点~同时尝试简单写一下课后练习的代码,太复杂的暂时不写了,无法验证对错,如果有幸拿到试验箱再补上完整代码。
一起学习~
加油!
看32位8051教学视频,送实验箱,200万大奖等你拿, 《STC单片机原理》免费教育大学 - ADC/比较器,DMA支持的12位ADC,轨到轨比较器,DAC - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)
本帖最后由 duyi324 于 2023-11-27 14:52 编辑
第一集:认识单片机
1. 上学并不是学的硬件专业,工作后才慢慢了解单片机,并从Arduino、51开始学起,一直到stc32、stm32、esp32等等,真的是很感谢自己的兴趣引导着自己越来越充实。
2. 就开发方式来说,个人感觉库函数更方便,但是学习的时候一定要学习寄存器的,否则就是知其然不知其所以然,遇到问题后也没办法从底层查找问题。
库函数开发的时候,运行效率问题我建议参考STM的HAL库+LL库的方式,LL库偏底层一点,运行效率与开发难度做了一些平衡。
本帖最后由 duyi324 于 2023-11-27 15:09 编辑
第二集:了解硬件
1. 看到有红外模块,刚好想在公司做一个空调控制的设备~公司空调的面板竟然在天花板,每次开关空调都要跑老远拿遥控器回来盯着天花板……
2. 刚知道基准电压引脚的作用是供内部ADC校准使用的
3. 课后作业:我现在正在学习USB,这个板子我可能会做一个红外遥控键盘(脑洞大开),用遥控器来控制电脑,或者鼠标指针; 本帖最后由 duyi324 于 2023-11-27 15:26 编辑
第三集:开发环境搭建和程序下载
同时安装C51 C251 ARM三个版本的Keil~来自:学习笔记|C251|STC32G单片机视频开发教程(冲哥)|第三集:开发环境搭建和程序下载 - 知乎 (zhihu.com)
本帖最后由 duyi324 于 2023-11-27 18:56 编辑
第三集:开发环境搭建
1. 网上搜的:如何同时安装Keil的C51、C251和MDK。
2. C51和C251有什么区别?
本帖最后由 duyi324 于 2023-11-27 18:53 编辑
第四集:建立工程点亮第一颗LED
1. sfr:SFR是special function register的缩写,即特殊功能寄存器,是在RAM里面的地址改名字方便程序使用的。
2. sbit:定义GPIO的一个引脚
3. 编译选项Output里面要把HEX Format改为 HEX-386
4. IO口相关寄存器在手册11.1章节
5. 将来要学习一下USB协议,能否自己复刻一个USB自动下载功能出来
本帖最后由 duyi324 于 2023-11-27 19:09 编辑
第五集:C语言运算符和进制数
1. printf格式控制字符串笔记
2. 数据范围
unsigned char 0~255
unsignedint 0~65535
char -128~127
int -32768~32767
本帖最后由 duyi324 于 2023-11-27 19:53 编辑
第六集:LED闪烁和花式点灯
1. 课后练习伪代码(SOS灯延时版)
while(1)
{
// 3短
P60 = 0;
delay_ms(100);
P60 = 1;
delay_ms(100);
P60 = 0;
delay_ms(100);
P60 = 1;
delay_ms(100);
P60 = 0;
delay_ms(100);
P60 = 1;
delay_ms(100);
// 3长
P60 = 0;
delay_ms(1000);
P60 = 1;
delay_ms(1000);
P60 = 0;
delay_ms(1000);
P60 = 1;
delay_ms(1000);
P60 = 0;
delay_ms(100);
P60 = 1;
delay_ms(100);
// 3短
P60 = 0;
delay_ms(100);
P60 = 1;
delay_ms(100);
P60 = 0;
delay_ms(100);
P60 = 1;
delay_ms(100);
P60 = 0;
delay_ms(100);
P60 = 1;
delay_ms(100);
}
本帖最后由 duyi324 于 2023-11-27 20:03 编辑
第七集:按键点灯
竟然有上一集课后练习答案~不改了
1. STC的单片机上电都是默认高电平吗?有没有办法改成默认低电平?如果在main函数里面修改的话会不会上电有一瞬间的高电平然后变成低电平?
2. 左移时右侧默认补零
3. 课后练习伪代码
u8 code led_table1[] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
u8 code led_table2[] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01};
u8 mode = 0;
u8 num;
#define KEY1 P32
/*************本地函数声明 **************/
voiddelay_ms(u8 ms);
void main(void)
{
while(1)
{
if(KEY1 == 0)
{
if(mode == 0)
{
mode = 1;
}
else
{
mode = 0;
}
P6 = 0xFF;
}
if(mode == 0)
{
P6 = led_table1;
}
else
{
P6 = led_table2;
}
num++;
if(num > 7)
num = 0;
delay_ms(100);
}
}
本帖最后由 duyi324 于 2023-11-27 20:13 编辑
第八集:蜂鸣器的应用
1. 蜂鸣器要用三极管驱动
页:
[1]
2