东软单片机驱动MAX7219不成功的问题

2020-03-11 19:36发布

我试图用申请的东软单片机驱动MAX7219,可是不成功。
请高手指教,附代码,谢谢!
define DIN_GPIO_PORT GPIOC
#define DIN_GPIO_PIN  MD_GPIO_PIN_13       
#define LOAD_GPIO_PORT GPIOC
#define LOAD_GPIO_PIN  MD_GPIO_PIN_7       
#define CLK_GPIO_PORT GPIOC
#define CLK_GPIO_PIN  MD_GPIO_PIN_6       



#include "main.h"

/** @addtogroup Projects_Examples_MD
  * @{
  */

/** @addtogroup Examples
  * @{
  */
#define uchar unsigned char
#define uint  unsigned int
       
#define CONST 2

#define CLK_0           md_gpio_set_pin_low(CLK_GPIO_PORT,CLK_GPIO_PIN)
#define CLK_1           md_gpio_set_pin_high(CLK_GPIO_PORT,CLK_GPIO_PIN)
#define LOAD_0          md_gpio_set_pin_low(LOAD_GPIO_PORT,LOAD_GPIO_PIN)
#define LOAD_1          md_gpio_set_pin_high(LOAD_GPIO_PORT,LOAD_GPIO_PIN)
#define DIN_0           md_gpio_set_pin_low(DIN_GPIO_PORT,DIN_GPIO_PIN)
#define DIN_1           md_gpio_set_pin_high(DIN_GPIO_PORT,DIN_GPIO_PIN)

#define NoOp   0x00           //??????
#define Digit0 0x01           // ???1???
#define Digit1 0x02           // ???2???
#define Digit2 0x03           // ???3???
#define Digit3 0x04           // ???4???
#define Digit4 0x05           // ???5???
#define Digit5 0x06           // ???6???
#define Digit6 0x07           // ???7???
#define Digit7 0x08           // ???8???

#define DecodeMode 0x09       // ???????
#define Intensity 0x0a        // ?????
#define ScanLimit 0x0b        // ???????
#define ShutDown 0x0c         // ????????

#define DisplayTest 0x0f      // ???????
#define ShutdownMode 0x00     // ?????
#define NormalOperation 0x01  // ??????
#define ScanDigit 0x07        // ??????,??8????
#define DecodeDigit 0xff      // ????,8???BCD?
#define IntensityGrade 0x0a   // ??????
#define TestMode 0x01         // ??????
#define TextEnd 0x00          // ??????,????????

/*****************************************************************************
* Function implementation - global ('extern') and local ('static')
******************************************************************************/
uchar DisBuffer[8]={0,0,0,0,0,0,0,0};    // ?????
uchar k;
//******************??t??**************************************
void delay(uint t)
{
       uint i;
       while(t--)
       {
              /* ??12M??,???1ms */
              for (i=0;i<125>              {}
       }
}
//*************?MAX7219????(8?)********************
void SendChar (uchar ch)
{
    uchar i,temp;
    delay(1);
    for (i=0;i<8>    {
         temp=ch&0x80;
         ch=ch<<1>         if(temp)
         {
            DIN_1;
                                                for(k=0;k            CLK_0;
                                                for(k=0;k            CLK_1;
                                                for(k=0;k         }
         else
         {
            DIN_0;
                                                for(k=0;k            CLK_0;
                                                for(k=0;k            CLK_1;
                                                for(k=0;k         }
    }
}
//**************?MAX7219???(16?)*****************************
void WriteWord (uchar addr,uchar num)
{
    LOAD_0;
    for(k=0;k    SendChar(addr);
    for(k=0;k    SendChar(num);
    for(k=0;k    LOAD_1;                            // ????????
                for(k=0;k}
//*********************** MAX7219??? ******************
void InitDisplay (void)
{
    WriteWord (ScanLimit,ScanDigit);         // ??????
    WriteWord (DecodeMode,DecodeDigit);      // ??????
    WriteWord (Intensity,IntensityGrade);    // ????
    WriteWord (ShutDown,NormalOperation);    // ?????????

}

/**
  * @brief  This function configures GPIO
  * @param  None
  * @retval None
  */
void config_gpio(void)
{
        md_gpio_set_pin_function(DIN_GPIO_PORT, DIN_GPIO_PIN, GPIO_FUNC_1);
        md_gpio_set_pin_push_pull(DIN_GPIO_PORT, DIN_GPIO_PIN);
        md_gpio_set_pin_mode_output(DIN_GPIO_PORT, DIN_GPIO_PIN);
       
        md_gpio_set_pin_function(LOAD_GPIO_PORT, LOAD_GPIO_PIN, GPIO_FUNC_1);
        md_gpio_set_pin_push_pull(LOAD_GPIO_PORT, LOAD_GPIO_PIN);
        md_gpio_set_pin_mode_output(LOAD_GPIO_PORT, LOAD_GPIO_PIN);
       
        md_gpio_set_pin_function(CLK_GPIO_PORT, CLK_GPIO_PIN, GPIO_FUNC_1);
        md_gpio_set_pin_push_pull(CLK_GPIO_PORT, CLK_GPIO_PIN);
        md_gpio_set_pin_mode_output(CLK_GPIO_PORT, CLK_GPIO_PIN);
       
        md_gpio_set_pin_function(LED2_GPIO_PORT, LED2_GPIO_PIN, GPIO_FUNC_1);
        md_gpio_set_pin_push_pull(LED2_GPIO_PORT, LED2_GPIO_PIN);
        md_gpio_set_pin_mode_output(LED2_GPIO_PORT, LED2_GPIO_PIN);
}

/**
  * @brief  Test main function
  * @retval Status.
  */
int main()
{
        md_init_1ms_tick();
        config_gpio();
        delay(1000);
        InitDisplay (); // MAX7219???
        WriteWord(DisplayTest,TestMode);  // ??????,????LED
        delay(1500);                      // ???1.5s
        WriteWord (DisplayTest,TextEnd);  // ????????
        WriteWord (Digit0,0);
        WriteWord (Digit1,1);
        WriteWord (Digit2,2);
        WriteWord (Digit3,3);
        while (1)
        {
                md_delay_1ms(1000);
               
                md_gpio_toggle_pin_output(LED2_GPIO_PORT, LED2_GPIO_PIN);

        }
}