AI 8051U学习记录
很荣幸,月前参加论坛的8051U推广活动获得了一个8051U的试验箱,非常感谢刘经理的快速安排。于是也是经过了漫长的等待,拿到了这个强大的8051U试验箱。近期将持续更新8051U的学习记录。
首先让我们简单的做一个开箱。如果拿这个试验箱和其他的STC试验箱做对比的话,
你会发现这个试验箱的堆料超级厚实。比STC32G12K128厚实的多。
正面照
背面照
板载外设资源集成丰富具有非常大的学习价值!
美中不足的一点是可能在生产的时候导致了有一个贴片电容没有贴好,焊盘脱落 。我使用万用表测量了是一个100NF的电容。
原理图上是控制耳机音量输出的, 这个电容掉了不知道会有什么影响。
添加KELI支持
工程编译通过
按下P3.2 + POWER ON 直接进入HID模式进行烧录。设置RESET 按键作为reset, 不做作为普通IO
先简单的点亮一个LED灯。测试一下复位按键是否正常工作。
#include <AI8051U.H>
#include <intrins.h>
typedef unsigned char u8;
void init_gpio();
void Delay500ms(void);
void main()
{
u8 i = 0;
WTST = 0x00;
init_gpio();
P40 = 0;
while(1)
{
P0 = ~(1 << i);
i++;
if (i >= 8)
{
i = 1;
}
Delay500ms();
}
}
void Delay500ms(void) //@33.1776MHz
{
unsigned long edata i;
_nop_();
_nop_();
i = 4147198UL;
while (i) i--;
}
void init_gpio()
{
P0M0 = 0xff;
P0M1 = 0x00;
P4M0 |= 0x01;
P4M1 &= ~0x01;
}
此时可以直接按下外部复位按键 P47-nRST 进入 USB-HID 模式 烧录代码。
现象如下:
使用库函数的方式来初始化IO
#include <AI8051U.H>
#include <intrins.h>
#include "STC32G_GPIO.h"
#include "STC32G_Delay.h"
void main()
{
unsigned char i = 0;
GPIO_InitTypeDef gpio;
gpio.Mode = GPIO_PullUp;
gpio.Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
GPIO_Inilize(GPIO_P0,&gpio);
gpio.Mode = GPIO_PullUp;
gpio.Pin = GPIO_Pin_0;
GPIO_Inilize(GPIO_P4,&gpio);
WTST = 0x00;
//开启三极管
P40 = 0;
while(1)
{
P0 = ~(1 << i);
i++;
if (i >= 8)
i = 1;
delay_ms(500);
}
}
如果再加一个Deinit的方法就好了。 实际上初始化IO之后, 使用PXX操作IO非常方便, 根本不需要额外的什么库函数方法等。 对于初始化而言STC-ISP也非常方便。 所以其实可以根据自己的喜好来选择不同的方式了。 需要注意的一点是,如果使用库函数的话, 需要屏蔽掉一个寄存器。否则会出现编译不过的情况。
嵌入式之路 发表于 2024-12-27 08:00
使用库函数的方式来初始化IO
上述代码的实验现象和使用寄存器的方式一摸一样,实际上都是操作寄存器。 嵌入式之路 发表于 2024-12-27 08:02
需要注意的一点是,如果使用库函数的话, 需要屏蔽掉一个寄存器。否则会出现编译不过的情况。
...
你用的头文件应该是比较早的,可使用新版ISP软件更新一下。
新的头文件里面这个寄存器名称已经改成“ENUSBRST”:
跟后面的定义名称区分开:
wnagming 发表于 2024-12-27 19:48
怎么把PCB从箱子里拿出来了?还能放进去吗?
可以放回去 dongge 发表于 2024-12-27 12:11
优秀课代表
继续努力! 在继续进行串口测试的时候,遇见了一点麻烦的事情。 USB cable 接 A口或者C口(非USB-2TTL)的时候,尽管不是USB模式,不知道是不是我设置的问题,在重启之后。电脑总是弹出USB插入或者退出的选项。 没办法只能使用Link 1d 来避免这个情况。
这样就可以直接使用LINK1D上带的串口来直接和板子通信。 而不需要使用USB-2TTL。 因为这个USB-2TTL在上点的时候会自动复位。 不是很好的可以观察串口的输出状态。
页:
[1]
2