30/09/2018, 18:38
giúp đỡ code arm không chạy
mình đang lập trình cho led 7 đoạn chạy từ 0-60 để hiển thị giây đây là đoạn code mình làm:
#include "stdint.h"
#include "stdbool.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#define PD0 (*((volatile unsigned long *)0x40007004))
#define PD1 (*((volatile unsigned long *)0x40007008))
#define LED_PORT (*((volatile unsigned long *))0x400053FC))
int main(void)
{
unsigned char maled[]= { 0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
unsigned char dem,chuc, dvi;
SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB|SYSCTL_PERIPH_GPIOD);
GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);
while(1)
{
for(dem=0;dem<60;dem++)
{
chuc = dem/10;
dvi = dem%10;
GPIOPinWrite(GPIO_PORTB_BASE,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7,maled[chuc]);
PD0 = 0x00;
SysCtlDelay(10000000);
PD0 = 0x01;
GPIOPinWrite(GPIO_PORTB_BASE,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7,maled[dvi]);
PD1 = 0x00;
SysCtlDelay(10000000);
PD1 = 0x01;
}
}
}
test nó vẫn cứ chạy 2 cái led song song chứ không chạy từ 0-60
anh em nào chỉ giúp mình được không ạ? xin cảm ơn
Bài liên quan
Bạn có thể cho mình xem sơ đồ kết nối giữa LED với vdk được không, không rõ là bạn kết nối trực tiếp như thế nào nên không trả lời chính xác được. Mình đoán là 2 led bạn nói ở 2 PORT khác nhau mà lại write data vào cùng một port.
GPIOPinWrite(GPIO_PORTBBASE,…
…
…
…
GPIOPinWrite(GPIOPORTB_BASE,…
mình dùng BJT để điều khiển 2 con led 7 seg trên cùng 1 port bạn ơi
2 cái PD0 với PD1 là để điều khiển tích cực BJT