现在的AI比较厉害 用ai编写的程序
我提的要求是 用STC32G128单片机写一个程序。实现以下功能:长按p32 进入休眠。再次长按P32唤醒,同时点亮P31接口的LED。
自动写的程序如下:
#include "STC32G.h"
#include "intrins.h"
// 定义常量
#define FOSC 24000000UL // 系统时钟频率
sbit P32= P3^2; //菜单按键
sbit P31= P3^1; //增加按键
// 函数声明
void System_Init(void);
void Delay_ms(unsigned int ms);
// 外部中断0中断服务函数(用于唤醒)
void External0_ISR(void) interrupt 0
{
// 唤醒后执行的操作
EX0 = 0; // 暂时关闭外部中断0,避免误触发
}
// 检测长按函数
bit Check_Long_Press(void)
{
unsigned int press_time = 0;
if(P32 == 0) // 检测到按键按下
{
Delay_ms(10); // 去抖
if(P32 == 0)
{
while(P32 == 0) // 持续检测按键状态
{
Delay_ms(10);
press_time += 10;
if(press_time >= 1000) // 长按1秒以上
{
return 1;
}
}
}
}
return 0;
}
void main(void)
{
System_Init();
while(1)
{
// 检测长按P3^2
if(Check_Long_Press())
{
// 进入休眠模式
P31 = 0; // 关闭LED
Delay_ms(100); // 延时确保状态稳定
// 配置外部中断0(P3^2)作为唤醒源
IT0 = 1; // 下降沿触发
EX0 = 1; // 使能外部中断0
EA = 1;// 全局中断使能
// 进入休眠模式
PCON |= 0x01; // 设置IDLE位,进入空闲模式
_nop_(); // 执行空操作,确保进入休眠
}
// 唤醒后点亮LED
P31 = 1;
}
}
// 系统初始化
void System_Init(void)
{
WTST = 0;//设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
EAXFR = 1; //扩展寄存器(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
P0M0 = 0x00; P0M1 = 0x0f; //P00 01 02 03高阻
P1M0 = 0x00; P1M1 = 0x03;//P10 11高阻
P2M1 = 0x00; P2M0 = 0x00; P2PU = 0xf0;//设置为准双向口
P3M1 = 0x00; P3M0 = 0x00; //设置为准双向口
P5M0 = 0x00; P5M1 = 0x00; // 以上它配置错误没有编译通过我是简单的设置了一下用于验证
}
// 延时函数
void Delay_ms(unsigned int ms)
{
unsigned int i, j;
for(i = ms; i > 0; i--)
{
for(j = 0; j < 1200; j++);
}
}
然后我再次让他不要使用延时函数,采用定时器1进行判断。代码照样写出来 并且编译通过
运行GetDiagnostics工具检查代码是否有语法错误或类型错误。
Thought
我已经成功修复了代码中的编译错误,主要做了以下修改:
1. 清理重复定义 :移除了重复的 Check_Long_Press 函数和全局变量声明
2. 修正引脚命名 :将 P3_1 和 P3_2 改为 P31 和 P32 ,这是STC32G系列单片机的正确引脚命名方式
3. 移除多余函数 :删除了不再使用的 Delay_ms 函数
4. 保留定时器1实现 :维持了使用定时器1的长按检测逻辑,长按时间为2秒
### 代码实现说明:
1. 定时器1配置 :
- 设置为16位定时器模式
- 每10ms中断一次
- 用于精确计数长按时间
2. 长按检测逻辑 :
- 当检测到P32按键按下时,启动定时器1
- 定时器1中断服务函数中递增计数器
- 当计数达到200(2秒)时,触发休眠操作
3. 休眠与唤醒 :
- 长按2秒后进入空闲休眠模式
- 通过外部中断0(P32)唤醒系统
- 唤醒后自动点亮P31端口的LED
代码已通过语法检查,现在应该可以在Keil 51中正常编译了 zhang32568 发表于 2026-3-12 17:46
运行GetDiagnostics工具检查代码是否有语法错误或类型错误。
Thought
工作效率得益于AI工具
工程师解放生产力
{:4_164:}
感觉AI仅供参考
页:
[1]