順序不能反,解釋:函數
ARM的芯片,外設一般都是給了時鐘後才能設置它的寄存器(即才能使用這個外設)。STM3二、LPC1XXX等等都是這樣,這麼作的目的是爲了省電,使用了所謂時鐘門控的技術。寄存器是基於觸發器的,觸發器的賦值是必定須要時鐘的,而寄存器的時鐘是由總線時鐘提供的,就是說沒有總線時鐘的話,你給寄存器值它是不會讀入的。spa
e.g.code
1 void LED_init() 2 { 3 GPIO_InitTypeDef GPIO_InitStructure;//相似變量聲明,須要放在最前面 4 5 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOB, ENABLE);//不能放在後面 6 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; 7 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 8 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 9 10 GPIO_Init(GPIOB, &GPIO_InitStructure); 11 GPIO_Init(GPIOE, &GPIO_InitStructure); 12 13 //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOB, ENABLE);//此處出錯 14 GPIO_SetBits(GPIOB, GPIO_Pin_5); 15 GPIO_SetBits(GPIOE, GPIO_Pin_5); 16 }