【发布时间】:2021-04-02 08:38:26
【问题描述】:
我需要编写一个非常简单的程序,使用处理器 ARM AT91SAM9263 使 LED 二极管闪烁。我需要使用安装在我的 Ubuntu 机器上的 QEMU 模拟器运行此代码。
我正在尝试编写一个具有 4 个功能的程序,它们正在初始化 LED 端口和按钮端口,它们正在闪烁 LED 二极管并检查按钮状态(是否拉出)。
我已经定义了基址寄存器,尽管我在制作 LED 二极管来打开/关闭它们并检查按钮状态时遇到了问题。简单地说,什么也没有发生。
以下是我的代码:
#include <stdio.h>
#include "AT91SAM9263-EK.h"
#include "AT91SAM9263.h"
#include "project.h"
#include <stdint.h>
#include <stdbool.h>
#define AT91B_LED1 AT91C_PIO_PB8 /* DS1 */
#define AT91B_LED2 AT91C_PIO_PC29 /* DS2 */
#define AT91B_NB_LEB 2
#define AT91D_BASE_PIO_LED1 (AT91C_BASE_PIOB)
#define AT91D_BASE_PIO_LED2 (AT91C_BASE_PIOC)
#define AT91D_ID_PIO_LED1 (AT91C_ID_PIOB)
#define AT91D_ID_PIO_LED2 (AT91C_ID_PIOC)
#define AT91B_BP1 AT91C_PIO_PC5 // Left click#
#define AT91B_BP2 AT91C_PIO_PC4 // Right click
#define AT91D_BASE_PIO_BP AT91C_BASE_PIOC
#define AT91D_ID_PIO_BP AT91C_ID_PIOCDE
void LedPortInit()
{
AT91C_BASE_PMC->PMC_PCER = (1 << AT91C_ID_PIOCDE ); // peripheral clock enable register (port C, D, E)/* Set the PIO line as input */
AT91D_BASE_PIO_LED1->PIO_ODR = 0x0000000F;
AT91D_BASE_PIO_LED1->PIO_PER = AT91C_PIO_PB8;
AT91D_BASE_PIO_LED2->PIO_OER = AT91C_PIO_PC29 ;
AT91D_BASE_PIO_LED2->PIO_PER = 0xFFFFFFFF;// 1 – Enable PIO to control the pin
AT91C_BASE_PIOE->PIO_PER = AT91C_PIO_PB31;/* Disable pull-up */
AT91C_BASE_PIOA->PIO_PPUDR = 0xFFFF0000;
}
void ButonPortInit()
{
AT91C_BASE_PMC->PMC_PCER = (1 << AT91C_ID_PIOCDE ); // peripheral clock enable register (port C, D, E)/* Set the PIO line as input */
AT91C_BASE_PIOD->PIO_ODR = 0x0000000F;
AT91C_BASE_PIOD->PIO_PER = AT91C_PIO_PC5;
AT91C_BASE_PIOB->PIO_OER = AT91C_PIO_PC4 ;
AT91C_BASE_PIOD->PIO_PER = 0xFFFFFFFF;// 1 – Enable PIO to control the pin
AT91C_BASE_PIOE->PIO_PER = AT91C_PIO_PB31;/* Disable pull-up */
AT91C_BASE_PIOA->PIO_PPUDR = 0xFFFF0000;
}
void LedSwitch()
{
while(1)
{
AT91B_LED1->AT91C_PIO_PB8 ^= 1;
}
AT91C_PIO_PC29 << 29 ;
}
void ButtonTest()
{
AT91C_PIO_PC5 << 5;
AT91C_PIO_PC4 << 4;
}
int main(void)
{
LedPortInit();
void ButonPortInit();
void LedSwitch();
void ButtonTest();
}
【问题讨论】: