OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5093|回复: 10

用32驱动max7219数码管模块没有反应,用51都可以,移植到32上就不行了,调了好久,不知道问题出在哪里,求大神指点

[复制链接]

8

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
209
金钱
209
注册时间
2015-11-12
在线时间
46 小时
发表于 2016-4-12 20:44:17 | 显示全部楼层 |阅读模式
3金钱

最佳答案

查看完整内容[请看2#楼]

void Nixie_tube_GPIO_Init(void) { RCC->APB2ENR|=1CRH|=0X00000033;// PB8 和 PB9 推挽输出 GPIOB->CRL&=0XFFFF0FFF; GPIOB->CRL|=0X00003000;// PB3 推挽输出 // CLK GPIOB->ODR|=1
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

25

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-3-6
在线时间
43 小时
发表于 2016-4-12 20:44:18 | 显示全部楼层
蓝帝王灯 发表于 2016-10-27 16:25
大神,能把你的寄存器驱动max7219数码管。程序发给我一份么?谢谢。

void Nixie_tube_GPIO_Init(void)
{
  RCC->APB2ENR|=1<<3;    //使能PORTB时钟

  GPIOB->CRH&=0XFFFFFF00;// LOAD    CLK  MAX7219_数码管
  GPIOB->CRH|=0X00000033;// PB8 和  PB9  推挽输出   

  GPIOB->CRL&=0XFFFF0FFF;
  GPIOB->CRL|=0X00003000;//   PB3                推挽输出  
                         //   CLK  
       
  GPIOB->ODR|=1<<3; //PB3 输出高       
  GPIOB->ODR|=1<<8; //PB8 输出高       
  GPIOB->ODR|=1<<9; //PB9 输出高               
}
//------------------------------------向 Max7219移位寄存器 写单个字节-----

void Write_Max7219_byte(u8 temp)  
{  
u8 i;  
for (i=0;i<8;i++)  //共 8 个时钟上升沿,发送 8 位,即一个字节   
  {  
     CLK=0; //时钟低电平
     DIN=((temp>>7)&0x01);//取字节最高位
     temp<<=1; //字节左移 1 位
     CLK=1; //时钟上升沿,发送(每个上升沿发送 1 位)
   }  
}  
//-----------------------------向 Max7219双口SRAM 写地址和数据(指令)----

void Write_Max7219(u8 address,u8 dat)  
{  
  LOAD=0; //加载数据 低电平
  Write_Max7219_byte(address);//发送地址  
  Write_Max7219_byte(dat);    //发送数据
  LOAD=1; //加载数据 上升沿,发送 1 个字(16位)                        
}         //D0---D7:数据,D8---D11:地址,D12---D15:未用

  
//-------------------------------------------------- Max7219 初始化 ------
void Init_Max7219(void)      
{  
Write_Max7219(SHUT_DOWN,0x00);    //正常工作 XXXXXXX1 关机模式 XXXXXXXX0   
Write_Max7219(DECODE_MODE,0x00);  //译码方式 D7~D0: 1---B译码 0---无译码   
Write_Max7219(SCAN_LIMIT, 0x07);  //扫描界限 0~7 0xX0~0xX7  
Write_Max7219(INTENSITY, 0x0A);   //亮度     0xX0~0xXf  
Write_Max7219(DISPLAY_TEST, 0x00);//显示测试 正常工作 XXXXXXX0 测试模式 XXXXXXX1     
Write_Max7219(SHUT_DOWN, 0x01);   //正常工作 XXXXXXX1 关机模式 XXXXXXXX0
       
//clear();                          // 8 个数码管全显示 0
}
//--------------------------------------------------  数码管 清屏 ------
void Clear_Nixie(void)        
{  
  Write_Max7219(1,0x00); //黑
  Write_Max7219(2,0x00); //黑
  Write_Max7219(3,0x00); //黑
  Write_Max7219(4,0x00); //黑
}
//--------------------------------------------单个数码管显示------  
void Single_Nixie_tube(u8 position ,u8 Value)  
{  
    Write_Max7219(position,dis_code[Value]);  
}
//-----------------------------------显示全部4个数码管----------------
void Display_all_Nixie_tube(void)  
{
if(fixed_time_flash>0||flag_work==0)  // 如果定时显示未结束,或体控和非体控都没工作
   {
    Single_Nixie_tube(1,fixed_time/10);// 定时时间 十位  
    Single_Nixie_tube(2,fixed_time%10);// 定时时间 个位
    fixed_time_flash--;                // 定时时间显示数递减
   }
  else
   {         
    Single_Nixie_tube(1,minutes/10);   // 运行时间 十位  
    Single_Nixie_tube(2,minutes%10);   // 运行时间 个位
   }  
Single_Nixie_tube(3,TK_level/10);     // 体控强度 十位  
Single_Nixie_tube(4,TK_level%10);     // 体控强度 个位

事在人为,顺势而为。
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11553
金钱
11553
注册时间
2014-4-1
在线时间
1317 小时
发表于 2016-4-12 21:17:52 | 显示全部楼层

需要知道很多软硬件背景条件,
只能瞎猜。

stm32速度很快,延时不够?

回复

使用道具 举报

8

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
209
金钱
209
注册时间
2015-11-12
在线时间
46 小时
 楼主| 发表于 2016-4-12 21:26:00 | 显示全部楼层
xuande 发表于 2016-4-12 21:17
需要知道很多软硬件背景条件,
只能瞎猜。

不知道,我设置GPIO的速度为2M也没有用
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11553
金钱
11553
注册时间
2014-4-1
在线时间
1317 小时
发表于 2016-4-12 21:35:32 | 显示全部楼层
马德里骑士 发表于 2016-4-12 21:26
不知道,我设置GPIO的速度为2M也没有用


这个2M不是我说的延时。


回复

使用道具 举报

8

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
209
金钱
209
注册时间
2015-11-12
在线时间
46 小时
 楼主| 发表于 2016-4-12 21:41:44 | 显示全部楼层
xuande 发表于 2016-4-12 21:35
这个2M不是我说的延时。

传数据的时候延时也加过,没什么反应
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11553
金钱
11553
注册时间
2014-4-1
在线时间
1317 小时
发表于 2016-4-12 21:45:17 | 显示全部楼层

没法帮啊

回复

使用道具 举报

8

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
209
金钱
209
注册时间
2015-11-12
在线时间
46 小时
 楼主| 发表于 2016-4-12 21:52:00 | 显示全部楼层

我再找找原因
回复

使用道具 举报

0

主题

25

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-3-6
在线时间
43 小时
发表于 2016-8-19 16:53:50 | 显示全部楼层
我用寄存器方式做出来了,但是用库函数没做出来。不知道你需要的是哪一种。
事在人为,顺势而为。
回复

使用道具 举报

2

主题

3

帖子

0

精华

新手入门

积分
38
金钱
38
注册时间
2016-10-26
在线时间
11 小时
发表于 2016-10-26 17:52:48 来自手机 | 显示全部楼层
sweetstandard 发表于 2016-8-19 16:53
我用寄存器方式做出来了,但是用库函数没做出来。不知道你需要的是哪一种。

能不能把寄存器版的发我一份,可以吗,谢谢
回复

使用道具 举报

3

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
215
金钱
215
注册时间
2016-7-28
在线时间
36 小时
发表于 2016-10-27 16:25:18 | 显示全部楼层
sweetstandard 发表于 2016-8-19 16:53
我用寄存器方式做出来了,但是用库函数没做出来。不知道你需要的是哪一种。

大神,能把你的寄存器驱动max7219数码管。程序发给我一份么?谢谢。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 21:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表