📄 led.c
字号:
#include <includes.h>
_sn74hc138_status sn74hc138_status[8];
void SetSn74hc138Status(void); // 74HC138真值表设置
void LedInilize(void);
void TaskLed(void *p_arg)
{
int j;
p_arg = p_arg;
LedInilize();
while(1)
{
// 依次点亮8个LED
for( j = 0; j < 8; j++)
{
if( sn74hc138_status[j].nPfLow != NONE ) AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, sn74hc138_status[j].nPfLow);
if( sn74hc138_status[j].nPfHigh != NONE ) AT91F_PIO_SetOutput(AT91C_BASE_PIOA, sn74hc138_status[j].nPfHigh);
OSTimeDlyHMSM(0, 0, 0, 500);
}
OSTimeDlyHMSM(0, 0, 1, 0);
}
}
void LedInilize()
{
// Enable peripheral clock,参见lib_AT91SAM7S64.h
AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA ) ;
// 设置LED相关引脚(PA28,PA29,PA30)为Output状态
AT91F_PIO_CfgOutput( AT91C_BASE_PIOA, LED_74HC138_A_PA21|LED_74HC138_B_PA18|LED_74HC138_C_PA17) ;
// 由74HC138真值表设置相应的电平状态
SetSn74hc138Status();
}
void SetSn74hc138Status(void)
{
sn74hc138_status[0].nPfLow = LED_74HC138_A_PA21|LED_74HC138_B_PA18|LED_74HC138_C_PA17;
sn74hc138_status[0].nPfHigh = NONE;
sn74hc138_status[1].nPfLow = LED_74HC138_B_PA18|LED_74HC138_C_PA17;
sn74hc138_status[1].nPfHigh = LED_74HC138_A_PA21;
sn74hc138_status[2].nPfLow = LED_74HC138_A_PA21|LED_74HC138_C_PA17;
sn74hc138_status[2].nPfHigh = LED_74HC138_B_PA18;
sn74hc138_status[3].nPfLow = LED_74HC138_C_PA17;
sn74hc138_status[3].nPfHigh = LED_74HC138_A_PA21|LED_74HC138_B_PA18;
sn74hc138_status[4].nPfLow = LED_74HC138_A_PA21|LED_74HC138_B_PA18;
sn74hc138_status[4].nPfHigh = LED_74HC138_C_PA17;
sn74hc138_status[5].nPfLow = LED_74HC138_B_PA18;
sn74hc138_status[5].nPfHigh = LED_74HC138_A_PA21|LED_74HC138_C_PA17;
sn74hc138_status[6].nPfLow = LED_74HC138_A_PA21;
sn74hc138_status[6].nPfHigh = LED_74HC138_B_PA18|LED_74HC138_C_PA17;
sn74hc138_status[7].nPfLow = NONE;
sn74hc138_status[7].nPfHigh = LED_74HC138_A_PA21|LED_74HC138_B_PA18|LED_74HC138_C_PA17;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -