- 打卡等级:初来乍到
- 打卡总天数:2
- 最近打卡:2025-05-09 09:37:52
已绑定手机
新手上路
- 积分
- 18
|
编译报错
user\main.c(42): error C141: syntax error near ']', expected 'sizeof'
代码如下
#include "main.h"
void main(void)
{
u8 current=10;
u16 p;
u8 f_scan=scan_start;//扫频值初始化
io_init();
pwm_init();
OLED_Init();//初始化OLED
OLED_ColorTurn(0);//0正常显示,1 反色显示
OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示
display_0();//开机界面
delay_ms(1000);
OLED_Clear();//清屏
while(1)
{
pwm_out(pwm_f_d16[],2);
// OLED_DrawBMP(0,0,128,64,BMP1);
display_mode4();//直径16雾化片固定显示界面
current++;
f_scan++;
p=current*6;
if(current>254)current=10;
if(f_scan>scan_end)f_scan=scan_start;
OLED_ShowNum(25,6,p,4,16);//显示功率值
OLED_ShowNum(98,6,current,3,16);//显示电流值
OLED_ShowNum(25,4,f_scan,3,16);//显示扫频终值
}
}
#include "main.h"
/*******************本地变量定义**********************/
u16 PWM1_Duty;
u16 PWM_PERIOD;
u16 pwm_f_d16[]={240,218,200,185,171,160}; // D16雾化片 100-150khz 步进10KHZ
u16 pwm_f_d13[6]={200,185,171,160,150,141}; // D13雾化片 120-170khz 步进10KHZ
u16 pwm_f_d10[6]={185,171,160,150,141,133}; // D10雾化片 130-180khz 步进10KHZ
u16 pwm_f_d8[6]={133,126,120,114,109,104}; // D8雾化片 180-230khz 步进10KHZ
/*************************PWM寄存器初始化********************************/
void pwm_init()
{
PWM1_Duty=120; //占空比初始值 50%
PWM_PERIOD=240; //频率初始值100KHZ
P_SW2|=0x80;
PWM1_ENO =0x04;
PWM1_PS=0x00; //高级 PWM 通道输出脚选择位在P1口
CLKSEL=0x00; //选择内部 IRC ( 默认 )
CLKDIV=0x00; //不分频
PWM1_CCER1=0x00; //写 CCMRx 前必须先清零 CCxE 关闭通道
PWM1_CCMR2=0x68; //通道模式配置 PWM模式1 输出方向 CCMRX是哪个通道就写哪个数字
PWM1_CCER1=0x10; //配置通道输出使能和极性
PWM1_ARRH =(u8)(PWM_PERIOD >> 8); //设置周期时间
PWM1_ARRL =(u8)PWM_PERIOD;
PWM1_CCR2H =(u8)(PWM1_Duty >> 8); //设置占空比时间 CCRXH是哪个通道就写哪个数字
PWM1_CCR2L =(u8)(PWM1_Duty);
PWM1_BKR=0x80; //使能主输出
PWM1_CR1=0x01; //开始计时
}
/**************PWM输出任意频率和占空比函数********************/
void pwm_out(u16 pwm_f[],u16 duty_set)
{
u16 i;
u16 period;
u16 duty;
for(i=0;i<6;i++)
{
period=pwm_f[i];
PWM1_ARRH =(u8)(period >> 8); //更新周期时间
PWM1_ARRL =(u8)period;
duty=duty_set*period;
PWM1_CCR2H =(u8)(duty >> 8); //更新占空比时间 CCRXH是哪个通道就写哪个数字 比如PWM1P就写1,PWM2P就写2
PWM1_CCR2L =(u8)(duty);
delay_ms(100);
}
}
头文件
#ifndef __PWM_H
#define __PWM_H
#define PWM1_1 0x00 //P:P1.0 N:P1.1
#define PWM1_2 0x01 //P:P2.0 N:P2.1
#define PWM1_3 0x02 //P:P6.0 N:P6.1
#define PWM2_1 0x00 //P:P1.2/P5.4 N:P1.3
#define PWM2_2 0x04 //P:P2.2 N:P2.3
#define PWM2_3 0x08 //P:P6.2 N:P6.3
#define PWM3_1 0x00 //P:P1.4 N:P1.5
#define PWM3_2 0x10 //P:P2.4 N:P2.5
#define PWM3_3 0x20 //P:P6.4 N:P6.5
#define PWM4_1 0x00 //P:P1.6 N:P1.7
#define PWM4_2 0x40 //P:P2.6 N:P2.7
#define PWM4_3 0x80 //P:P6.6 N:P6.7
#define PWM4_4 0xC0 //P:P3.4 N:P3.3
#define ENO1P 0x01
#define ENO1N 0x02
#define ENO2P 0x04
#define ENO2N 0x08
#define ENO3P 0x10
#define ENO3N 0x20
#define ENO4P 0x40
#define ENO4N 0x80
//#define PWM_PERIOD 1000 //设置周期值
unsigned int pwm_f_d16[];
void pwm_init();
void UpdatePWM();
void pwm_init2();
void pwm_out(unsigned int pwm_f[],unsigned int duty_set);
#endif
|
|