從新建一個(gè)空白程序開始,從頭寫一個(gè)程序框架,能有助于更好的理解MPLAB? X開發(fā)環(huán)境所提供的各種編程資源。
1. 新建一個(gè)空白程序。其項(xiàng)目屬性如下:
2. 新建main.c文件
在Projects列表頁面中,選中項(xiàng)目名稱,點(diǎn)右鍵,通過彈出菜單,新建main.c文件。
Main.c中默認(rèn)已經(jīng)有了幾行代碼: 包含xc.h頭文件和主函數(shù)main()。
3. 頭文件結(jié)構(gòu)
在main.c文件編輯區(qū),右鍵,Navigate -> View Includes Hierarchy, 可以查看xc.h,以及下層包含的頭文件。
當(dāng)前main.c文件的頭文件包含結(jié)構(gòu):
xc.h 頭文件中,主要是對(duì)cci.h 和avr/io.h進(jìn)行了包含,并且定義了使能/禁止中斷的宏定義。
Avr/io.h文件,是通用的“索引”型頭文件,對(duì)各個(gè)AVR器件的頭文件進(jìn)行了條件包含。
Iotn817.h 文件具體定義了ATtiny817芯片的IO口,外設(shè)寄存器等信息。
4. IO口操作
PORTA.DIR = 0x55;
PORTA.OUTSET = 0x55;
uint8_t pinvalue = PORTA.IN & 0xAA;
PORTA.OUTTGL = 0x55;
數(shù)據(jù)類型uint8_t 是標(biāo)準(zhǔn)頭文件stdint.h中定義,根據(jù)上面的頭文件結(jié)構(gòu),已經(jīng)包含,所以不需要再進(jìn)行包含。
5. 中斷
- 包含中斷頭文件
#include
- 中斷處理函數(shù):
ISR(NVMCTRL_EE_vect){
//添加中斷處理函數(shù)代碼
}
- 中斷使能函數(shù) ei() 或 sei().
- 中斷禁止函數(shù) di() 或 cli()
6. 延遲
- 定義 F_CPU 宏為系統(tǒng)頻率
#define F_CPU 33333333 //3.3MHz
- 包含延遲頭文件
#include
- 使用延遲函數(shù)
_delay_ms(1000);
7. FUSE
FUSES =
{
.APPEND = 0,
.BODCFG = ACTIVE_DIS_gc | LVL_BODLEVEL0_gc | SAMPFREQ_1KHz_gc | SLEEP_DIS_gc,
.BOOTEND = 0,
.OSCCFG = FREQSEL_20MHZ_gc,
.SYSCFG0 = CRCSRC_NOCRC_gc | RSTPINCFG_UPDI_gc,
.SYSCFG1 = SUT_64MS_gc,
.WDTCFG = PERIOD_OFF_gc | WINDOW_OFF_gc,
};
Fuse結(jié)構(gòu)體定義在iotn817.h中
-
mcu
+關(guān)注
關(guān)注
146文章
17123瀏覽量
350979 -
AVR
+關(guān)注
關(guān)注
11文章
1123瀏覽量
78643 -
C語言
+關(guān)注
關(guān)注
180文章
7604瀏覽量
136683
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論