Trích:
Nguyên văn bởi thanhgand
chào các bác.cho em hỏi một chút về c30.các bác có thể diễn giải giúp em dòng code sau được không : " extern volatile T2CONBITS T2CONbits __attribute__((__sfr__));"
em không hiểu __attribute__((__sfr__)) là gì.
rồi một loạt các khai báo tương tự thế trong các thư viện của c30.
__attribute__((__sfr__,__deprecated__,__unsafe__))
vvv
em đã đọc qua help của c30 mà không hiểu mấy, mong các bác chỉ giúp.em mới tìm hiểu c30.
|
Chỗ này chắc là khai báo địa chỉ của các thanh ghi T2CON (hoặc cấp phát bộ nhớ gì đó, nói chung là chưa rõ )
Mấy cái _sfr_ , _unsafe_ được khai báo địa chỉ trong support/dspic33f/gld (nếu dùng dspic33)
Mấy cái này em cũng chưa hiểu rõ lắm. Ví dụ chỗ này nhé:
Code:
__extension__ typedef struct tagCLKDIVBITS {
union {
struct {
unsigned PLLPRE:5;
unsigned :1;
unsigned PLLPOST:2;
unsigned FRCDIV:3;
unsigned DOZEN:1;
unsigned DOZE:3;
unsigned ROI:1;
};
struct {
unsigned PLLPRE0:1;
unsigned PLLPRE1:1;
unsigned PLLPRE2:1;
unsigned PLLPRE3:1;
unsigned PLLPRE4:1;
unsigned :1;
unsigned PLLPOST0:1;
unsigned PLLPOST1:1;
unsigned FRCDIV0:1;
unsigned FRCDIV1:1;
unsigned FRCDIV2:1;
unsigned :1;
unsigned DOZE0:1;
unsigned DOZE1:1;
unsigned DOZE2:1;
};
};
} CLKDIVBITS;
Chỗ này là sao unsigned :1;
unsigned PLLPRE:5; // PLLPRE chia 5 hay PLLPRE gồm 5 bít ?, lôi nó ra như thế nào
Muốn dùng từng bít của thanh ghi CLKDIV thì làm thế nào ? Hoặc muốn cấu hình PLLDIV, PLLPOST hoặc PLLPRE thì làm thế nào ?
Giả sử em muốn cấu hình dùng thạch anh ngoài sao cho FCY= 40MIPS, em tính ra các hệ số M=32, N1=N2=2, thì thiết lập các thông số này ở đâu ?
Mấy cái configuration bit nữa , nếu cấu hình trong đó thì ko phải code nữa có phải ko ạ ?
Ngoài các biến của C chuẩn, C30 còn có các loại biến nào khác không ?