标题: stm32硬件SPI驱动MAX7219数码管有疑问,求高手指导! [打印本页]

作者: 161210111    时间: 2018-5-10 16:09
标题: stm32硬件SPI驱动MAX7219数码管有疑问,求高手指导!
  1. void RCC_Configuration(void);
  2. void GPIO_Configration(void);
  3. void SPI_Configuration(void);
  4. u8 Write_Max7219_byte(u8 data);
  5. void Write_Max7219_data(u8 add,u8 data);
  6. void init_MAX7219(void);


  7. int main(void)
  8. {
  9.         RCC_Configuration();
  10.         GPIO_Configration();
  11.         SPI_Configuration();
  12.         init_MAX7219();
  13.         while(1)
  14.         {
  15.                 Write_Max7219_data(1,1);
  16.                 Write_Max7219_data(2,2);
  17.                 Write_Max7219_data(3,3);
  18.         }
  19. }


  20. void RCC_Configuration(void)
  21. {
  22.         SystemInit();
  23.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);
  24.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
  25.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);        
  26. }


  27. void GPIO_Configration(void)
  28. {
  29.         GPIO_InitTypeDef GPIO_Initstructure;
  30.         
  31.         //êy¾YDin:PA7 ê±ÖóClk:PA5  
  32.         GPIO_Initstructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
  33.         GPIO_Initstructure.GPIO_Speed=GPIO_Speed_50MHz;
  34.         GPIO_Initstructure.GPIO_Mode=GPIO_Mode_AF_PP;
  35.         GPIO_Init(GPIOA,&GPIO_Initstructure);
  36.         
  37.         //ƬѡCE:PA3  êy¾YÖ¸áîDC£oPA3 ¸′λRST:PA2
  38.         GPIO_Initstructure.GPIO_Pin=GPIO_Pin_3;
  39.         GPIO_Initstructure.GPIO_Speed=GPIO_Speed_50MHz;
  40.         GPIO_Initstructure.GPIO_Mode=GPIO_Mode_Out_PP;
  41.         GPIO_Init(GPIOA,&GPIO_Initstructure);
  42. }


  43. void SPI_Configuration(void)
  44. {
  45.         SPI_InitTypeDef SPI_InitStructure;
  46.         
  47.         SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;
  48.         SPI_InitStructure.SPI_Mode=SPI_Mode_Master;
  49.         SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;
  50.         SPI_InitStructure.SPI_CPOL=SPI_CPOL_Low;
  51.         SPI_InitStructure.SPI_CPHA=SPI_CPHA_1Edge;
  52.         SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;
  53.         SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_32;
  54.         SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;
  55.         SPI_InitStructure.SPI_CRCPolynomial=7;
  56.         SPI_Init(SPI1,&SPI_InitStructure);
  57.         
  58.         SPI_Cmd(SPI1,ENABLE);
  59. }


  60. u8 Write_Max7219_byte(u8 data)
  61. {
  62.         u8 temp;
  63.         while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET);
  64.         SPI_I2S_SendData(SPI1,data);
  65.         while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)==RESET);
  66.         temp=SPI_I2S_ReceiveData(SPI1);
  67.         return temp;
  68. }


  69. void Write_Max7219_data(u8 add,u8 data)
  70. {
  71.         GPIO_ResetBits(GPIOA,GPIO_Pin_3);
  72.         Write_Max7219_byte(add);
  73.         Write_Max7219_byte(data);
  74.         GPIO_SetBits(GPIOA,GPIO_Pin_3);
  75. }


  76. void init_MAX7219(void)
  77. {
  78.         Write_Max7219_data(0x09,0xff);
  79.         Write_Max7219_data(0x0A,0x08);
  80.         Write_Max7219_data(0x0B,0x02);
  81.         Write_Max7219_data(0x0c,0x01);
  82.         Write_Max7219_data(0x0f,0x01);
  83. }
  84. 程序如上,数码管全亮!!!

复制代码



作者: homedou    时间: 2018-7-28 15:39
Write_Max7219(0x0f, 0x00);     你这段有问题,你输入的是0x01,打开了测试模式,要输入0x00




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1