四汐 发表于 2023-11-30 14:10:56

STC32G跟着冲哥学习打卡篇:(1~14)矩阵按键和密码锁

本帖最后由 四汐 于 2023-12-18 00:12 编辑

STC32G跟着冲哥学习打卡篇:(1)认识单片机和环境搭建
今天是第一次学习STC32G的芯片:

搭建好keil的A251环境啦。




四汐 发表于 2023-11-30 14:13:42

学会上传图片了哈哈哈哈

本帖最后由 四汐 于 2023-11-30 14:23 编辑

file:///D:/Tencent/%E5%BE%AE%E4%BF%A1%E6%96%87%E4%BB%B6/WeChat%20Files/wxid_jy7fabioas9k22/FileStorage/Temp/f6e8dfa3f357780343ae2c0f9b98077.png

rengran 发表于 2023-11-30 19:37:54

加油,争取能申请到实验箱

四汐 发表于 2023-12-1 00:29:24

rengran 发表于 2023-11-30 19:37
加油,争取能申请到实验箱

加油!{:4_166:}

四汐 发表于 2023-12-1 00:34:51

STC32G跟着冲哥学习打卡篇:(2)LED灯

本帖最后由 四汐 于 2023-12-1 00:35 编辑

今天是第二天
   刚看完,《点亮一个LED灯实验》
       又学了一个新知识!
《震惊{:4_190:}!!!!竟然可以不用头文件{:4_181:},就直接编写程序!!》

四汐 发表于 2023-12-1 14:11:40

STC32G跟着冲哥学习打卡篇:(4)点亮LED下
介绍了如何使用USB-CDC\HID不断电下载的方法
今后可以尝试制作一个头文件,每次建立新工程的时候,只需要引用曾经编写好的USB下载子程序就可以了


四汐 发表于 2023-12-1 15:02:57


STC32G跟着冲哥学习打卡篇:(5)C语言部分

5-1:通过USB打印一串字符,“显示温湿度信息”。

5-1:2进制-10进制-16进制,互相转化。
5-2:
转义字符:

格式字符:


1.d格式字符
功能:用来输出十进制数
格式:%d:按整型数据的实际长度输出
%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补一空格;若大于m,则按实际位数输出。
%ld:输出长整型数据。

2.o格式字符
功能:以八进制形式输出整数;
格式:%o:按整型数据的实际长度输出
%mo:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补一空格;若大于m,则按实际位数输出。
%lo:输出长整型数据。

3.x格式字符
功能:以十六进制形式输出整数
格式:%x:按整型数据的实际长度输出
%mx:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补一空格;若大于m,则按实际位数输出。
%lx:输出长整型数据。

4.u格式字符
功能:以十进制数输出无符号整数
格式:%u:按整型数据的实际长度输出
%mu:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补一空格;若大于m,则按实际位数输出。
%lu:输出长整型数据。

5.c格式字符**
功能:输出单个字符
格式:%c:按整型数据的实际长度输出
%mc:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补一空格;若大于m,则按实际位数输出。
%lc:输出长整型数据。

6.s格式字符
功能:输出字符串
格式:%s:按整型数据的实际长度输出
%ms:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补一空格;若大于m,则按实际位数输出。
%ls:输出长整型数据。

7.f格式字符
功能:以小数形式输出单、双精度实数
格式:%f:按整型数据的实际长度输出
%mf:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补一空格;若大于m,则按实际位数输出。
%lf:输出长整型数据。

8.e格式字符
功能:以指数形式输出单、双精度实数
格式:%e:按整型数据的实际长度输出
%me:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补一空格;若大于m,则按实际位数输出。
%le:输出长整型数据。

9.g格式字符
功能:以%f、%e中较短的输出宽度输出单、双精度实数
格式:%g:按整型数据的实际长度输出
%mg:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补一空格;若大于m,则按实际位数输出。
%lg:输出长整型数据。


四汐 发表于 2023-12-2 13:21:50

打卡:今天学习一下C语言中的指针

看到USB_HID下载方式,使用到了指针:
<div style="background-color: rgb(40, 42, 54); line-height: 22px; white-space: pre; font-size: 16px; font-family: Consolas, &quot;Courier New&quot;, monospace; color: rgb(248, 248, 242);">
<div><div style="line-height: 22px;">
<div><span style="color: #ff79c6;">#include</span> <span style="color: #e9f284;">"</span><span style="color: #f1fa8c;">COMM/STC32G.H</span><span style="color: #e9f284;">"</span>
<span style="color: #ff79c6;">#include</span> <span style="color: #e9f284;">"</span><span style="color: #f1fa8c;">COMM/stc32_stc8_usb.h</span><span style="color: #e9f284;">"</span>

<span style="color: #ff79c6;">#define</span> <span style="color: #50fa7b;">MAIN_Fosc</span> <span style="color: #bd93f9;">24000000</span><span style="color: #ff79c6;">UL</span><span style="color: #6272a4;">    //定义主时钟评率</span>
<span style="color: #6272a4;">
</span></div></div>
<span style="color: #6272a4;">// USB调试及复位所需定义</span>
<span style="color: #ff79c6;">char</span> <span style="color: #ff79c6;">*</span>USER_DEVICEDESC <span style="color: #ff79c6;">=</span> <span style="color: #50fa7b;">NULL</span>;
<span style="color: #ff79c6;">char</span> <span style="color: #ff79c6;">*</span>USER_PRODUCTDESC <span style="color: #ff79c6;">=</span> <span style="color: #50fa7b;">NULL</span>;
<span style="color: #ff79c6;">char</span> <span style="color: #ff79c6;">*</span>USER_STCISPCMD <span style="color: #ff79c6;">=</span> <span style="color: #e9f284;">"</span><span style="color: #f1fa8c;">@STCISP#</span><span style="color: #e9f284;">"</span>;<span style="color: #6272a4;"> // 设置自动复位到ISP区的用户接口命令</span>
<span style="color: #6272a4;">
</span>
<div style="line-height: 22px;">
<div><span style="color: #ff79c6;">void</span> <span style="color: #50fa7b;">sys_init</span>()
{
    WTST <span style="color: #ff79c6;">=</span> <span style="color: #bd93f9;">0</span>;<span style="color: #6272a4;">// 设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快</span>
    EAXFR <span style="color: #ff79c6;">=</span> <span style="color: #bd93f9;">1</span>;<span style="color: #6272a4;"> // 扩展寄存器(XFR)访问使能</span>
    CKCON <span style="color: #ff79c6;">=</span> <span style="color: #bd93f9;">0</span>;<span style="color: #6272a4;"> // 提高访问XRAM速度</span>

    P0M1 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">30</span>;
    P0M0 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">30</span>;<span style="color: #6272a4;"> // 设置P0.4、P0.5为漏极开路(实验箱加了上拉电阻到3.3V)</span>
    P1M1 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">32</span>;
    P1M0 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">32</span>;<span style="color: #6272a4;"> // 设置P1.1、P1.4、P1.5为漏极开路(实验箱加了上拉电阻到3.3V), P1.1在PWM当DAC电路通过电阻串联到P2.3</span>
    P2M1 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">3c</span>;
    P2M0 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">3c</span>;<span style="color: #6272a4;"> // 设置P2.2~P2.5为漏极开路(实验箱加了上拉电阻到3.3V),设置开漏模式需要断开PWM当DAC电路中的R2电阻</span>
    P3M1 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">50</span>;
    P3M0 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">50</span>;<span style="color: #6272a4;"> // 设置P3.4、P3.6为漏极开路(实验箱加了上拉电阻到3.3V)</span>
    P4M1 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">3c</span>;
    P4M0 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">3c</span>;<span style="color: #6272a4;"> // 设置P4.2~P4.5为漏极开路(实验箱加了上拉电阻到3.3V)</span>
    P5M1 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">0c</span>;
    P5M0 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">0c</span>;<span style="color: #6272a4;"> // 设置P5.2、P5.3为漏极开路(实验箱加了上拉电阻到3.3V)</span>
    P6M1 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">ff</span>;
    P6M0 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">ff</span>;<span style="color: #6272a4;"> // 设置为漏极开路(实验箱加了上拉电阻到3.3V)</span>
    P7M1 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">00</span>;
    P7M0 <span style="color: #ff79c6;">=</span> <span style="color: #ff79c6;">0x</span><span style="color: #bd93f9;">00</span>;<span style="color: #6272a4;"> // 设置为准双向口</span>
}</div>
</div>
<span style="color: #6272a4;">
</span>
<div style="line-height: 22px;">
<div><span style="color: #ff79c6;">void</span> <span style="color: #50fa7b;">main</span>()
{
<div style="line-height: 22px;">    <span style="color: #50fa7b;">sys_init</span>();</div>
    <span style="color: #50fa7b;">usb_init</span>();
    EA <span style="color: #ff79c6;">=</span> <span style="color: #bd93f9;">1</span>;
   
}</div>
</div></div></div>然后不是很懂指针是什么东西,就打算学习一下指针先,嘿嘿


四汐 发表于 2023-12-2 19:57:13

本帖最后由 四汐 于 2023-12-2 20:01 编辑

STC32G跟着冲哥学习打卡篇:(6)LED闪烁

#define MAIN_Fosc 24000000UL//定义主时钟频率
- - a;//先运算再输出值
a - -;//先输出值再运算

关于宏定义:
#define 名称 需要宏定义的内容
typedef 需要宏定义的内容 名称


#define MAIN_Fosc 24000000UL //将“MAIN_Fosc”宏定义为“24000000UL”
typedef unsigned int u16   //将“u16”宏定义为“unsigned int”



模块化编程:
void 函数名()
{
内容;
}
int 函数名()
{
int 变量;
内容;
return 变量;//返回一个值int
}

头文件编写:
#ifndef   __NAME_H__    //判断该头文件名未被定义过,那么就可以使用

四汐 发表于 2023-12-2 23:54:41

STC32G跟着冲哥学习打卡篇:(7)按键点灯


1.按键消抖
if (key == 0)
{
delay_ms(20);
if(key ==0)
{
   内容;
}
}

2.按键控制LED亮灭

if (key == 0)
{
delay_ms(20);
if(key ==0)
{
   while(key == 0);//松开开关才执行,并且只执行一次
   内容;
   while(key ==0);//按下开关就执行,并且只执行一次
}
}


3.按键控制LED灯左右移动
看了冲哥的视频,感觉有点繁琐。
因为想到以前用到的一个指令“_crol_()”【左移一位】和“_cror_()”【右移一位】,因为我是在89C52上用的,感觉32G的应该也可以用哈哈哈哈
页: [1] 2
查看完整版本: STC32G跟着冲哥学习打卡篇:(1~14)矩阵按键和密码锁