1、IO的控制 ---------
system_init
- /**
- ****************************************************************************************
- * @brief System Initiialization
- *
- *
- ****************************************************************************************
- */
- void system_init(void)
- {
- SetWord16(CLK_AMBA_REG, 0x00); // set clocks (hclk and pclk ) 16MHz
- SetWord16(SET_FREEZE_REG,FRZ_WDOG); // stop watch dog
- SetBits16(SYS_CTRL_REG,PAD_LATCH_EN,1); // open pads
- SetBits16(SYS_CTRL_REG,DEBUGGER_ENABLE,1); // open debugger
- SetBits16(PMU_CTRL_REG, PERIPH_SLEEP,0); // exit peripheral power down
- }
程序中,SetWord16是对寄存器直接写入的宏。第一个参数为寄存器的直接地址,第二个参数为要写入的值,
Dialog常用这种办法,实现对芯片的设置的。
在它的头文件datasheet.h中,可以看到,给出了每个寄存器的地址定义,对于需要对每个位控制的寄存器,也提供了相应的结构,如:
- /*=============================*/
- struct __CLK_PER_REG
- /*=============================*/
- {
- WORD BITFLD_TMR_DIV : 2;
- WORD : 1;
- WORD BITFLD_TMR_ENABLE : 1;
- WORD BITFLD_WAKEUPCT_ENABLE : 1;
- WORD BITFLD_I2C_ENABLE : 1;
- WORD BITFLD_UART2_ENABLE : 1;
- WORD BITFLD_UART1_ENABLE : 1;
- WORD BITFLD_SPI_DIV : 2;
- WORD : 1;
- WORD BITFLD_SPI_ENABLE : 1;
- WORD : 2;
- WORD BITFLD_QUAD_ENABLE : 1;
- };