使用未声明的标识符 'RD16'
use of undeclared identifier 'RD16'
我正在尝试为 PIC18F4550 设置 TMR1 T1CON 寄存器,但我收到与 RD16 相关的错误 bit.I 我收到:
config.c:17:1: error: use of undeclared identifier 'RD16'
RD16 = 1;
^
1 error generated.
根据数据表:
RD16: 16-Bit Read/Write Mode Enable bit
1 = Enables register read/write of Timer1 in one 16-bit operation
0 = Enables register read/write of Timer1 in two 8-bit operations
我看了一些帖子,应该是 correct.Im 使用 XC8 和 MPLab
我的 config.c 完整代码:
#include <xc.h>
void configPIC(void){
T3CCP2:T3CCP1 = 01; //TMR1 para CCP1
CCP1M0 = 0; //Captura flancos de subida
CCP1M1 = 1;
CCP1M2 = 0;
CCP1M3 = 1;
CCP1IF = 0 ; //Bandera de Captura CCP1
}
void timer1config(void){
//TMR1 Config Registros
TMR1ON = 1;
RD16 = 1;
T1RUN = 0; //Usar reloj interno
TMR1CS = 0; // FOSC / 4
T1CKPS1:T1CKPS0 = 00;
T1OSCEN = 0;
}
RD16 bit 位于 T1CON byte / 寄存器内。 xc.h
header 将其指定为 T1CONbits 结构中的位域成员,取自 here:
extern volatile near union {
struct {
unsigned TMR1ON:1;
unsigned TMR1CS:1;
unsigned T1SYNC:1;
unsigned T1OSCEN:1;
unsigned T1CKPS0:1;
unsigned T1CKPS1:1;
unsigned T1RUN:1;
unsigned RD16:1;
};
struct {
unsigned :2;
unsigned NOT_T1SYNC:1;
};
} T1CONbits;
你应该这样使用它:
T1CONbits.RD16 = 1;
与 PIC 设备上任何寄存器内的所有其他位一样。检查 p18f4500.h header 以找出所有寄存器的名称。
PS。无论如何,我想补充一点,如果您使用免费的 xc8 编译器或 sdcc 编译器将 PIC18 用于自定义项目,请不要这样做,将所有 pic 设备放入垃圾桶并购买更便宜、更快、更好和更简单的设备STM32 设备。除非您使用付费 xc8 编译器或为必须使用 PIC 的项目工作,否则不要浪费您的时间。
尝试这样的事情:
#include <xc.h>
void configPIC(void){
T3CONbits.T3CCP2 = 0; //TMR1 para CCP1
T3CONbits.T3CCP1 = 0;
CCP1CONbits.CCP1M0 = 0; //Captura flancos de subida
CCP1CONbits.CCP1M1 = 1;
CCP1CONbits.CCP1M2 = 0;
CCP1CONbits.CCP1M3 = 1;
PIR1bits.CCP1IF = 0; //Bandera de Captura CCP1
}
void timer1config(void){
T1CONbits.TMR1ON = 1;
T1CONbits. RD16 = 1;
T1CONbits.T1RUN = 0; //Usar reloj interno
T1CONbits.TMR1CS = 0; // FOSC / 4
T1CONbits.T1CKPS1 = 0;
T1CONbits.T1CKPS0 = 0;
T1CONbits.T1OSCEN = 0;
}
您可能想看看 Microchip 代码配置器。它可以为您做很多配置工作。
我正在尝试为 PIC18F4550 设置 TMR1 T1CON 寄存器,但我收到与 RD16 相关的错误 bit.I 我收到:
config.c:17:1: error: use of undeclared identifier 'RD16'
RD16 = 1;
^
1 error generated.
根据数据表:
RD16: 16-Bit Read/Write Mode Enable bit
1 = Enables register read/write of Timer1 in one 16-bit operation
0 = Enables register read/write of Timer1 in two 8-bit operations
我看了一些帖子,应该是 correct.Im 使用 XC8 和 MPLab
我的 config.c 完整代码:
#include <xc.h>
void configPIC(void){
T3CCP2:T3CCP1 = 01; //TMR1 para CCP1
CCP1M0 = 0; //Captura flancos de subida
CCP1M1 = 1;
CCP1M2 = 0;
CCP1M3 = 1;
CCP1IF = 0 ; //Bandera de Captura CCP1
}
void timer1config(void){
//TMR1 Config Registros
TMR1ON = 1;
RD16 = 1;
T1RUN = 0; //Usar reloj interno
TMR1CS = 0; // FOSC / 4
T1CKPS1:T1CKPS0 = 00;
T1OSCEN = 0;
}
RD16 bit 位于 T1CON byte / 寄存器内。 xc.h
header 将其指定为 T1CONbits 结构中的位域成员,取自 here:
extern volatile near union {
struct {
unsigned TMR1ON:1;
unsigned TMR1CS:1;
unsigned T1SYNC:1;
unsigned T1OSCEN:1;
unsigned T1CKPS0:1;
unsigned T1CKPS1:1;
unsigned T1RUN:1;
unsigned RD16:1;
};
struct {
unsigned :2;
unsigned NOT_T1SYNC:1;
};
} T1CONbits;
你应该这样使用它:
T1CONbits.RD16 = 1;
与 PIC 设备上任何寄存器内的所有其他位一样。检查 p18f4500.h header 以找出所有寄存器的名称。
PS。无论如何,我想补充一点,如果您使用免费的 xc8 编译器或 sdcc 编译器将 PIC18 用于自定义项目,请不要这样做,将所有 pic 设备放入垃圾桶并购买更便宜、更快、更好和更简单的设备STM32 设备。除非您使用付费 xc8 编译器或为必须使用 PIC 的项目工作,否则不要浪费您的时间。
尝试这样的事情:
#include <xc.h>
void configPIC(void){
T3CONbits.T3CCP2 = 0; //TMR1 para CCP1
T3CONbits.T3CCP1 = 0;
CCP1CONbits.CCP1M0 = 0; //Captura flancos de subida
CCP1CONbits.CCP1M1 = 1;
CCP1CONbits.CCP1M2 = 0;
CCP1CONbits.CCP1M3 = 1;
PIR1bits.CCP1IF = 0; //Bandera de Captura CCP1
}
void timer1config(void){
T1CONbits.TMR1ON = 1;
T1CONbits. RD16 = 1;
T1CONbits.T1RUN = 0; //Usar reloj interno
T1CONbits.TMR1CS = 0; // FOSC / 4
T1CONbits.T1CKPS1 = 0;
T1CONbits.T1CKPS0 = 0;
T1CONbits.T1OSCEN = 0;
}
您可能想看看 Microchip 代码配置器。它可以为您做很多配置工作。