老板現在不在,抽空寫一篇文章:STM32的初學者可以看看,老鳥請自覺飄過-_-!.
由于公司為台灣黑工廠,所以所有電腦都是繁體系統,所以所有文字也為繁體的,不過應該不影響閱讀.
剛購入STM32時,對它的資料看的有點頭痛,不過在整理了一下之后就大至清析明了,特別是它的固件庫使用風格比較另類,使用了大量的結構體,然后用整個結構作為固件庫函數的參數,這樣雖然可以減少函數參數的傳遞,但對于習慣了NPX與TI的固件庫來說這樣有點不習慣.
廢話這么多,現在就上我的STM32第一個程式,點亮一個LED! 須要注意的是須要使用固件庫.
GPIO_InitTypeDef GPIOASET; //定義一個GPIO_InitTypeDef類型的結構
GPIO_DeInit(GPIOA); //GPIOA恢復默認值
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //先使能GPIO A的時鐘 (幾乎所有的CORTEX-M3核的外設都須要先使能時鐘)
GPIOASET.GPIO_Pin=(GPIO_Pin_0|GPIO_Pin_1); /選擇到GPIO_PIN 0還有1 */
GPIOASET.GPIO_Speed=GPIO_Speed_50MHz; //GPIO的速度
GPIOASET.GPIO_Mode=GPIO_Mode_Out_PP; / 輸入輸出類型:當然是輸出型的 */
GPIO_Init(GPIOA,&GPIOASET); //然后設置GPIO,它是根據GPIOASET中各個成員的值來進行設定的
接下來我們就可以直接使用GPIO了,如果為了效率可以使用匯編或是直接寫寄存器的方法操作,如果無所謂效率就使用固件庫;
GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET); //置位相應的LED
GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET); //清零相應的LED 這很容易理解.