Ai8051U学习之旅(2) - Keil图形界面配置工程
一、前言作为一名牛马小电工,建立自己的风格,快速开发,是必须的,领导说了,质量优先,效率优先,否则不适合做电子牛马
二、准备工作
板子到手,仔细看了一下手册,配置开发环境的视频又刷了一遍,用户手册也仔细看了看,于是开干
1)《AI8051U实验箱V1.2使用说明书.pdf》,好好看,不能错过一个字,避免出现低级错误,很多人在使用新东西时,总是出各种莫名的问题,其实大多是没有看说明书
2)《AI8051U.pdf》 这个寄存器的设置说明,各种注意事项,都要仔细阅读,包括小字部分也不要放过
三、开干吧
3.1 基于定时器的工程改编
个人的风格是,每个.c文件+一个.h文件,因为是学习,所以注释尽量详细,但也不能太繁琐
文件夹包括:
code - 存放源文件
Prj - 存入keil工程文件
SI - 存放sourceInsight
ReadMe.txt - 简单的程序记录
3.2 在程序中作了界面配置
/*----------------------------------------------------------------------------------------------------------------------
* Copyright(c) 2025, Mark Xu Work Studio R&D Department. All rights reserved.
* 文件名称 : SysConfig.h
* 文件版本 : V1.0.0
* 功能描述 : 系统配置文件
* 创建人员 : Mark Xu
* 创建日期 : 2025/02/17
----------------------------------------------------------------------------------------------------------------------*/
#ifndef __SYSCONFIG_H__
#define __SYSCONFIG_H__
// <<< Use Configuration Wizard in Context Menu >>>
//----------------------------------------------------------------------------------------------------------------------
//<h> The Project information
// <s> The Hardware Version
#define HW_PCBA_VERSION "R00"
// <s> The Firmware Version
#define FW_FIRMWARE_VERSION "R00"
//</h>
//----------------------------------------------------------------------------------------------------------------------
//<h> The mcu peripheral config
// <q> The timer0 config
//<i> Enable or Disable
#define DRV_TIMER0_EN (1) //定时器0,0-禁用,1-使能
// <q> The timer1 config
//<i> Enable or Disable
#define DRV_TIMER1_EN (0) //定时器1,0-禁用,1-使能
// <q> The timer2 config
//<i> Enable or Disable
#define DRV_TIMER2_EN (0) //定时器2,0-禁用,1-使能
// <q> The pwm config
// <i> enable or disable
#define DRV_PWM_EN (0) //PWM模块,0-禁用,1-使能
// <q> The comparor config
// <i> enable or disable
#define DRV_CMP_EN (0) //比较器, 0-禁用,1-使能
// <q> The uart1 config
//<i> Enable or Disable
#define DRV_UART1_EN (0) //串口, 0-禁用,1-使能
// <q> The uart2 config
//<i> Enable or Disable
#define DRV_UART2_EN (0) //串口, 0-禁用,1-使能
// <q> The uart3 config
//<i> Enable or Disable
#define DRV_UART3_EN (0) //串口, 0-禁用,1-使能
// <q> The uart4 config
//<i> Enable or Disable
#define DRV_UART4_EN (0) //串口, 0-禁用,1-使能
// <q> The spi function
//<i> Enable or Disable
#define DRV_SPI_EN (0) //SPI功能,0-禁止, 1-使能
// <q> The RTC function
//<i> Enable or Disable
#define DRV_RTC_EN (0) //RTC功能,0-禁止,1-使能
// <q> The watchdog config
// <i> enable or disable
#define DRV_WDT_EN (0) //看门狗, 0-禁用,1-使能
// </h>
//应用测试相关
//----------------------------------------------------------------------------------------------------------------------
//<h> The function test module
// <q> The adc sample test
//<i> Enable or Disable
#define APP_ADC_TEST_EN (0) //ADC采样测试,0-禁用,1-使能
// <q> The eeprom write and read test
//<i> Enable or Disable
#define APP_EEPROM_TEST_EN (0) //eeporm测试, 0-禁用,1-使能
// </h>
//调试打印相关
// <e> The debug print function
// <i> Enable or Disable
#define APP_DEBUG_PRINT_EN (0) //调试打功能, 0-禁用,1-使能
#if (APP_DEBUG_PRINT_EN)
// <q> The main module debug print function
// <i> enable or disable
#define MAIN_PRINT_EN (1) //主程序模块,打印功能
// <q> The system module debug print function
// <i> enable or disable
#define SYS_PRINT_EN (0) //SYS模块, 打印功能
// <q> The charging module debug print function
// <i> enable or disable
#define CHRG_PRINT_EN (0) //充电模块,打印功能
// <q> The key module debug print function
// <i> enable or disable
#define KEY_PRINT_EN (0) //按键模块,打印功能
// <q> The led module debug print function
// <i> enable or disable
#define LED_PRINT_EN (0) //显示模块,打印功能
//如果忘记打开宏“DRV_UART_EN”,在编译时,此处会有提示
#if (!DRV_UART_EN)
#error Please enable the uart driver (set the macro "DRV_UART_EN" to 1)!!!
#endif //#if (!DRV_UART_EN)
#else
#define MAIN_PRINT_EN (0) //主程序模块,打印功能
#define SYS_PRINT_EN (0) //SYS模块, 打印功能
#define CHRG_PRINT_EN (0) //充电模块,打印功能
#define KEY_PRINT_EN (0) //按键模块,打印功能
#define LED_PRINT_EN (0) //显示模块,打印功能
#endif //#if (APP_DEBUG_PRINT_EN)
// </e>
// <<< end of configuration section >>>
#endif //#ifndef __SYSCONFIG_H__/*----------------------------------------------------------------------------------------------------------------------
* Copyright(c) 2024, Mark Xu Work Studio R&D Department. All rights reserved.
* 文件名称 : main.c
* 文件版本 : V1.0.0
* 功能描述 : 主应用模块
* 创建人员 : Mark Xu
* 创建日期 : 2025/02/17
----------------------------------------------------------------------------------------------------------------------*/
#include "main.h"
//----------------------------------------------------------------------------------------------------------------------
// 配置文件
//----------------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------------
// 类型重定义
//----------------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------------
// 常量、宏
//----------------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------------
// 局部变量
//----------------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------------
// 全局变量
//----------------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------------
// 本地函数声明
//----------------------------------------------------------------------------------------------------------------------
/*----------------------------------------------------------------------------------------------------------------------
* 函数名称 :void main(void)
* 功能描述 :主程序入口
* 入口参数 :无
* 出口参数 :无
* 备注说明 :无
----------------------------------------------------------------------------------------------------------------------*/
void main(void)
{
Sys_Init(); //系统初始化
while(1)
{
if (g_bSysTick10msFlag)
{
Led_LoopProc();
g_bSysTick10msFlag = FALSE;
}
}
}
3.3.2 main.h
/*----------------------------------------------------------------------------------------------------------------------
* Copyright(c) 2025, Mark Xu Work Studio R&D Department. All rights reserved.
* 文件名称 : main.h
* 文件版本 : V1.0.0
* 功能描述 : 主程序头文件
* 创建人员 : Mark Xu
* 创建日期 : 2025/02/17
----------------------------------------------------------------------------------------------------------------------*/
#ifndef __MAIN_H__
#define __MAIN_H__
#include "includes.h"
//----------------------------------------------------------------------------------------------------------------------
// 常量、宏
//----------------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------------
// 类型重定义
//----------------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------------
// 全局变量
//----------------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------------
// 全局函数
//----------------------------------------------------------------------------------------------------------------------
#endif //#ifndef __MAIN_H__
其它源文件就不贴了,有兴趣的可以参考附件工程:
上午写的跑马灯没有注意是低电平控制的,晚上在板子跑时才发现,在些更改一下代码
void Led_LoopProc(void)
{
s_u8LedTickCnt++;
if (s_u8LedTickCnt < 15)
return;
s_u8LedTickCnt = 0;
LED_PORT <<= s_u8LedLoopCnt;
s_u8LedLoopCnt++;
if (s_u8LedLoopCnt > 8 )
{
LED_PORT = 0xff;
s_u8LedLoopCnt = 0;
}
}
attach://85480.mp4
{:qiang:}
页:
[1]