duyi324 发表于 2023-11-27 14:25:09

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:37:17

本帖最后由 duyi324 于 2023-11-27 14:52 编辑

第一集:认识单片机

1. 上学并不是学的硬件专业,工作后才慢慢了解单片机,并从Arduino、51开始学起,一直到stc32、stm32、esp32等等,真的是很感谢自己的兴趣引导着自己越来越充实。
2. 就开发方式来说,个人感觉库函数更方便,但是学习的时候一定要学习寄存器的,否则就是知其然不知其所以然,遇到问题后也没办法从底层查找问题。
库函数开发的时候,运行效率问题我建议参考STM的HAL库+LL库的方式,LL库偏底层一点,运行效率与开发难度做了一些平衡。

duyi324 发表于 2023-11-27 14:46:10

本帖最后由 duyi324 于 2023-11-27 15:09 编辑

第二集:了解硬件

1. 看到有红外模块,刚好想在公司做一个空调控制的设备~公司空调的面板竟然在天花板,每次开关空调都要跑老远拿遥控器回来盯着天花板……
2. 刚知道基准电压引脚的作用是供内部ADC校准使用的
3. 课后作业:我现在正在学习USB,这个板子我可能会做一个红外遥控键盘(脑洞大开),用遥控器来控制电脑,或者鼠标指针;

duyi324 发表于 2023-11-27 15:25:26

本帖最后由 duyi324 于 2023-11-27 15:26 编辑

第三集:开发环境搭建和程序下载


同时安装C51 C251 ARM三个版本的Keil~来自:学习笔记|C251|STC32G单片机视频开发教程(冲哥)|第三集:开发环境搭建和程序下载 - 知乎 (zhihu.com)

duyi324 发表于 2023-11-27 15:30:53

本帖最后由 duyi324 于 2023-11-27 18:56 编辑

第三集:开发环境搭建

1. 网上搜的:如何同时安装Keil的C51、C251和MDK。





2. C51和C251有什么区别?

duyi324 发表于 2023-11-27 15:36:49

本帖最后由 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 18:55:25

本帖最后由 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:10:51

本帖最后由 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 19:41:04

本帖最后由 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:03:44

本帖最后由 duyi324 于 2023-11-27 20:13 编辑

第八集:蜂鸣器的应用





1. 蜂鸣器要用三极管驱动




页: [1] 2
查看完整版本: STC32G12K128学习打卡帖