2021/10/13 智慧傢俱嵌入式實訓第三天 位操作(2)
阿新 • • 發佈:2021-10-14
位操作原理
哪些區域支援位操作
sys.h
https://download.csdn.net/download/qq_35629971/32114714
stm32工程模板裡面有sys.h
編寫跑馬燈 位操作程式碼
先led.c
運用暫存器初始化使能
#include "led.h" //初始化PE5,4,3,2為輸出口.並使能這四個口的時鐘 //LED IO初始化 void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);//使能PB,PE埠時鐘 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1-->PE.5 埠配置, 推輓輸出 GPIO_Init(GPIOE, &GPIO_InitStructure); //推輓輸出 ,IO口速度為50MHz GPIO_SetBits(GPIOE,GPIO_Pin_5); //PE.5 輸出高 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; //LED1-->PE.4 埠配置, 推輓輸出 GPIO_Init(GPIOE, &GPIO_InitStructure); //推輓輸出 ,IO口速度為50MHz GPIO_SetBits(GPIOE,GPIO_Pin_4); //PE.4 輸出高 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //LED1-->PE.3 埠配置, 推輓輸出 GPIO_Init(GPIOE, &GPIO_InitStructure); //推輓輸出 ,IO口速度為50MHz GPIO_SetBits(GPIOE,GPIO_Pin_3); //PE.3 輸出高 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //LED1-->PE.2 埠配置, 推輓輸出 GPIO_Init(GPIOE, &GPIO_InitStructure); //推輓輸出 ,IO口速度為50MHz GPIO_SetBits(GPIOE,GPIO_Pin_2); //PE.2 輸出高 }
led.h
運用位操作
定義out
#ifndef __LED_H #define __LED_H #include "sys.h" #define LED1 PEout(2)// PE2 #define LED2 PEout(3)// PE3 #define LED3 PEout(4)// PE4 #define LED4 PEout(5)// PE5 void LED_Init(void);//初始化 #endif
最後編寫main函式
#include "stm32f10x.h" #include "led.h" #include "delay.h" int main(void){ delay_init(10); LED_Init(); while(1){ PEout(2)=1; //LED1 低電平 滅 PEout(3)=1; PEout(4)=1; PEout(5)=1; delay_ms(500); PEout(2)=0; //LED1 高電平 亮 PEout(3)=0; PEout(4)=0; PEout(5)=0; delay_ms(500); } }
原始碼:
https://wwa.lanzoui.com/i2mOxvcjcsh