介紹STM32F407位帶操作方法,設(shè)置寄存器的偏移量,實(shí)現(xiàn)按GPIO口指定位進(jìn)行讀寫操作,方便編程。
【1】位帶操作配置說(shuō)明
位段操作:實(shí)現(xiàn)51單片機(jī)中寄存器的操作方法。
【2】源代碼
Sys.c文件增加以下代碼:
#include "sys.h"
/*
函數(shù)功能:設(shè)置NVIC中斷控制器優(yōu)先級(jí)
函數(shù)形參:
IRQn_Type IRQn:中斷線
uint32_t PreemptPriority:搶占優(yōu)先級(jí)
uint32_t SubPriority:次優(yōu)先級(jí)
*/
void SetNVICPriorityGrouping(IRQn_Type IRQn,uint32_t PreemptPriority, uint32_t SubPriority)
{
uint32_t Priority;
NVIC_SetPriorityGrouping(NVIC_PriorityGroup_2); //設(shè)置優(yōu)先級(jí)分組,每個(gè)工程只能設(shè)置一次
Priority=NVIC_EncodePriority(NVIC_PriorityGroup_2,PreemptPriority,SubPriority); //編碼優(yōu)先級(jí)
NVIC_SetPriority(IRQn,Priority); //設(shè)置優(yōu)先級(jí)
NVIC_EnableIRQ(IRQn);
}
Led.h 增加位帶操作代碼
#define LED0 PFout(9)
#define LED1 PFout(10)
#define BEEP PFout(8)
Key.h增加位帶操作代碼
#define KEY0 PEin(4)
#define KEY1 PEin(3)
#define KEY2 PEin(2)
#define KEY_UP PAin(0)
Main.c示例代碼
#include "stm32f4xx.h" // Device header
#include "led.h"
#include "delay.h"
#include "key.h"
#include "usart.h"
#include "sys.h"
int main(void)
{
u8 i,key;
LED_Init();
KEY_Init();
USART1_Init(84,115200);
while(1)
{
key=ScanKeyVal(0);
if(key)
{
i=!i;
LED0=!LED0;
LED1=!LED1;
}
}
}
閱讀全文