1. 程式人生 > 其它 >2021/10/13 智慧傢俱嵌入式實訓第三天 位操作(2)

2021/10/13 智慧傢俱嵌入式實訓第三天 位操作(2)

位操作原理

哪些區域支援位操作

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