找回密码
 立即注册
查看: 19|回复: 3

8051U深度入门到32位51大型实战教学视频-学习打卡

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2026-03-31 08:20:20
已绑定手机

3

主题

45

回帖

145

积分

注册会员

积分
145
发表于 昨天 00:26 | 显示全部楼层 |阅读模式

打卡第一集-序言

8051U强在哪里
1.屏幕显示和视频播放(flash编程器)
2.IIS录放音3.PWM_DMA
4.频谱分析仪(上位机)
5.手写计算器.
6.QSPI,PWM移相,硬件乘除,单精度浮点

Ai8051U,USB 型 1T 8051,支持32位和8位指令集•RMB2.3
管脚兼容天王级别的!89C52RC,12C5A60S2
要兼容8位8051指令集,可以用 Keil C51/IAR/SDCC 编译器
===就相当于更强大的8H8K64U
要兼容 32位8051指令集:可以用 Keil C251编译器,双核兼容设计
= =就相当于更强大的32G12K128,32G8K64
34K SRAM(2K edata, 32K xdata), 64K Flash
TFPU@120MHz,硬件浮点/硬件三角函数 运算器
DMA支持PWM, DMA支持外设直接到外设,P2P
120MHz-PWM支持硬件移相,16位PWM;真12位ADC
USB, 4组串口,12位ADC,轨到轨比较器
QSPI, SPI, I2S, I2C, TFT-18080/M6800 接口
PDIP40,LOFP44, LQFP48

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2026-03-31 08:20:20
已绑定手机

3

主题

45

回帖

145

积分

注册会员

积分
145
发表于 昨天 21:01 | 显示全部楼层

打卡第二集-硬件及工具介绍

image.png

image.png

image.png

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2026-03-31 08:20:20
已绑定手机

3

主题

45

回帖

145

积分

注册会员

积分
145
发表于 昨天 23:13 | 显示全部楼层

打卡第三集-点亮第一颗LED

新建工程

1.创建空工程

2.添加头文件

3.输入如下代码,并编译


在单片机(嵌入式)开发中,头文件(.h 文件)扮演着至关重要的角色。它就像是硬件与软件之间的“说明书”和“接线员”,告诉编译器如何正确操作硬件。

以下是关于单片机头文件的详细解析,涵盖其作用、常见分类、内容结构以及使用技巧。

1. 头文件的核心作用

  • 硬件抽象:将单片机内部复杂的寄存器地址映射为有意义的符号(如 P1ADC1)。开发者不需要记住 0xE000E010 这样的地址,直接写 GPIOA->ODR 即可。
  • 函数声明:告诉编译器库函数的存在(如 HAL_Delay()),确保在调用时参数和返回值类型正确。
  • 宏定义:定义时钟频率、位操作(如 SET_BIT)、或条件编译开关。
  • 类型定义:统一数据类型(如 uint8_t),提高代码在不同平台间的可移植性。

2. 常见的单片机头文件分类

根据开发方式和厂商不同,头文件主要分为以下三类:

A. 厂商提供的标准库头文件

这是目前最主流的方式,由芯片厂商(ST、Microchip、NXP等)提供。

厂商 芯片系列 核心头文件 说明
ST STM32 stm32f1xx.h 标准外设库 (SPL) 或 硬件抽象层库 (HAL) 的入口。
ST STM32CubeMX main.h 由CubeMX工具生成,包含引脚配置、时钟树定义。
STC 51系列 reg51.h / reg52.h 定义了8051内核的特殊功能寄存器(SFR),如 P0, TCON
Microchip AVR (Arduino) avr/io.h 根据编译器自动选择正确的芯片寄存器定义文件。
ESP ESP32/8266 esp32-hal.h ESP-IDF或Arduino框架下,包含WiFi、GPIO等外设操作。

B. 内核与编译器相关头文件

无论是什么单片机,只要使用C语言开发,通常都需要以下头文件:

  • stdint.h:标准整数类型。定义了 uint32_t(无符号32位整型)、int8_t 等。强烈建议使用这类定长类型,而不是 intunsigned int,因为不同单片机的字长不同。
  • stdbool.h:定义了布尔类型 truefalse
  • string.h:提供 memcpymemset 等内存操作函数。
  • math.h:提供数学运算(注意在单片机中启用数学库可能会增加代码体积)。

C. 用户自定义头文件

用于工程模块化管理。例如:

  • bsp_led.h:板级支持包,对外提供 LED_On() 等接口,隐藏底层GPIO操作。
  • protocol.h:通信协议的结构体定义和枚举。

3. 一个典型的单片机头文件结构

以 STM32 HAL 库生成的 main.h 为例:

c

/* 1. 防重复包含保护 */
#ifndef __MAIN_H
#define __MAIN_H

/* 2. 包含其他头文件 */
#include "stm32f1xx_hal.h"
#include "stdio.h"

/* 3. 宏定义 (引脚映射、时钟、常量) */
#define LED1_PIN       GPIO_PIN_5
#define LED1_PORT      GPIOA
#define BSP_LED_On()   HAL_GPIO_WritePin(LED1_PORT, LED1_PIN, GPIO_PIN_RESET)
#define BSP_LED_Off()  HAL_GPIO_WritePin(LED1_PORT, LED1_PIN, GPIO_PIN_SET)

#define SYSTEM_CLOCK   72000000  // 72MHz

/* 4. 全局变量声明 (注意使用 extern) */
extern UART_HandleTypeDef huart1;

/* 5. 函数声明 */
void SystemClock_Config(void);
void MX_GPIO_Init(void);
void Error_Handler(void);

#endif /* __MAIN_H */

4. 关键技巧与注意事项

防重复包含

在头文件开头和结尾一定要有:

c

#ifndef _MY_HEADER_H
#define _MY_HEADER_H
// ... 代码 ...
#endif

或者使用 #pragma once(大多数现代编译器支持),防止在多个 .c 文件中包含同一个头文件导致的重复定义错误。

extern 的使用

如果在 main.c 中定义了一个全局变量 int counter;,若要在 uart.c 中使用它,必须在其头文件或 uart.c 中声明:

c

extern int counter; // 告诉编译器:这个变量在其他地方定义,链接时再找

切忌在头文件中直接定义变量,否则会导致“multiple definition”链接错误。

路径设置

编译器需要知道头文件在哪里。

  • 在 Keil/IAR 中:需要在工程设置(Options)的 C/C++ 选项卡中添加包含路径(Include Paths)。
  • 在 GCC (Makefile) 中:使用 -I 参数,如 -I./Inc -I./Drivers/STM32F1xx_HAL_Driver/Inc

条件编译

利用头文件进行配置,例如在 config.h 中:

c

#define USE_FREERTOS   1   // 使能 RTOS
#define DEBUG_ENABLE   1   // 使能调试打印

#if (DEBUG_ENABLE == 1)
    #define DEBUG_PRINT(...)    printf(__VA_ARGS__)
#else
    #define DEBUG_PRINT(...)
#endif

5. 常见问题排查

  • 找不到头文件 (fatal error: xxx.h: No such file or directory):通常是因为包含路径未添加,或者头文件路径写错了。
  • 重复定义 (error: L6200E: Symbol xxx multiply defined):一般在头文件里定义了全局变量,而没有加 static 或没有放在 .c 文件中。
  • 未定义的类型名 (error: unknown type name ‘GPIO_TypeDef’):通常是因为头文件的包含顺序错误。例如,在 bsp_led.h 中使用了 GPIO_TypeDef,但没有包含 stm32f1xx.h

image.png

image.png

回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:71
  • 最近打卡:2026-03-31 08:30:33
已绑定手机

14

主题

139

回帖

972

积分

版主

积分
972
发表于 14 小时前 | 显示全部楼层
要 做到 USB不停电下载
要 尝试 AiCube 图形化自动配置生成程序工具
推荐优先看的:  
printf_usb("Hello World !\r\n")
USB不停电下载, 演示视频链接:
https://www.stcaimcu.com/thread-19077-1-1.html

下载 最新的 AiCube-ISP-V6.96T 或以上版本软件 !

深圳国芯人工智能有限公司-工具软件

下载 最新的 USB库函数,永远用最新的 USB库函数 !
深圳国芯人工智能有限公司-库函数
下载 最新的 用户手册 !
下载 最新的 上机实践指导书 !

下载 最新的 Ai8051U 用户手册
https://www.stcaimcu.com/data/download/Datasheet/AI8051U.pdf

下载 最新的 Ai8051U 实验指导书,
AiCube 图形化自动配置生成程序工具使用说明
https://www.stcaimcu.com/data/do ... %AF%BC%E4%B9%A6.pdf


推荐优先看的 printf_usb("Hello World !\r\n")及usb不停电下载, 演示视频链接



回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-3-31 22:47 , Processed in 0.108663 second(s), 61 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表