K64使用寄存器控制GPIO

使用Freedom-k64开发板,尝试使用寄存器绝对地址进行IO控制,控制PROTB21输出。
寄存器地址的编写和定义

#define PORT_B_PDOR *(volatile uint32_t*)(0x400FF040u)
#define PORT_B_PSOR *(volatile uint32_t*)(0x400FF044u)
#define PORT_B_PDDR *(volatile uint32_t*)(0x400FF054u)
#define PORT_B_PCR21 *(volatile uint32_t*)(0x4004A054u)
  1. 配置GPIOB的时钟,这是与51使用寄存器控制的最大区别之一。
  2. 配置GPIOB21的引脚功能,也就是复用功能,有的引脚存在好多种功能,所以就需要选择功能,这里选择GPIO功能,每个引脚功能都是一个32位寄存器来控制。
  3. 配置GPIOB21的数据方向,输入输出方向.
#include "include.h"

#define PORT_B_PDOR *(volatile uint32_t*)(0x400FF040u)
#define PORT_B_PSOR *(volatile uint32_t*)(0x400FF044u)
#define PORT_B_PDDR *(volatile uint32_t*)(0x400FF054u)
#define PORT_B_PCR21 *(volatile uint32_t*)(0x4004A054u)
#define PORT_SIM 0x40047000u
#define SCGC5_OFFSET 0x1038u
#define SCGC5_B_MASK (0x400u)
int main(void)
{
    *(volatile uint32_t*)(PORT_SIM+SCGC5_OFFSET) |=SCGC5_B_MASK;//开启PROTB时钟
    PORT_B_PCR21 =(PORT_B_PCR21&(~0x700u))|(1<<8);//配置引脚功能
    PORT_B_PDDR|= (1 << 21);//配置数据方向为输出
    PORT_B_PDOR &= ~( 1 << 21);//写入数据,低电平
    while(1){
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值