打印
[STM32F1]

是我函数有问题还是?

[复制链接]
548|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xxmmi|  楼主 | 2022-1-3 20:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
六行三列LED灯,通过三极管接到9个IO口上,静态的时候亮度很足,。现在要让LED灯闪动,把闪动的函数放在中断里,亮度就很低。。
R代表行,L代表列,ON点亮,OFF灭
void fun1(void)         
{
        R1_ON;  
        L1_ON;L1_OFF;
        L2_ON;L2_OFF;
        L3_ON;L3_OFF;
        R1_OFF;
        switch(sta)
                {        
                        case 1:  
                          //ROW2
                      R2_ON;
                      L1_ON;     
                      L1_OFF;
                      R2_OFF;
                      break;
                    case 2:
                      //ROW2
                      R2_ON;
                      L1_ON;     
                      L1_OFF;
                      R2_OFF;   
                     
                      //ROW3
                      R3_ON;
                      L1_ON;     
                      L1_OFF;
                      R3_OFF;  
                      break;
                    case 3:
                      //ROW2
                      R2_ON;
                      L1_ON;     
                      L1_OFF;
                      R2_OFF;   
                     
                      //ROW3
                      R3_ON;
                      L1_ON;     
                      L1_OFF;
                      R3_OFF;   
                     
                      //ROW4
                      R4_ON;
                      L1_ON;     
                      L1_OFF;
                      R4_OFF;
                      break;
                    case 4:
                      //ROW2
                      R2_ON;
                      L1_ON;     
                      L1_OFF;
                      R2_OFF;   
                     
                      //ROW3
                      R3_ON;
                      L1_ON;     
                      L1_OFF;
                      R3_OFF;   
                     
                      //ROW4
                      R4_ON;
                      L1_ON;     
                      L1_OFF;
                      R4_OFF;
                     
                      //ROW5
                      R5_ON;
                      L1_ON;     
                      L1_OFF;
                      R5_OFF;
                      break;
                    case 5:   
                      //ROW1
                      R1_ON;
                      L1_ON;   
                      L1_OFF;
                      R1_OFF;     
                      //ROW3
                      R3_ON;
                      L1_ON;     
                      L1_OFF;
                      R3_OFF;                             
                      //ROW4
                      R4_ON;
                      L1_ON;     
                      L1_OFF;
                      R4_OFF;
                     
                      //ROW5
                      R5_ON;
                      L1_ON;     
                      L1_OFF;
                      R5_OFF;
                      break;  
                    case 6:
                      //ROW1
                      R1_ON;
                      L1_ON;   
                      L1_OFF;
                      R1_OFF;                                    
                      //ROW5
                      R5_ON;
                      L1_ON;     
                      L1_OFF;
                      R5_OFF;
                      break;  
                    case 7:
                      //ROW2
                      R2_ON;
                      L2_ON;L3_ON;     
                      L2_OFF;L3_OFF;
                      R2_OFF;
                      break;
                    case 8:
                      //ROW2
                      R2_ON;
                      L3_ON;     
                      L3_OFF;
                      R2_OFF;
                     
                      //ROW3
                      R3_ON;
                      L3_ON;     
                      L3_OFF;
                      R3_OFF;
                      break;
                    case 9:
                      //ROW2
                      R2_ON;
                      L3_ON;     
                      L3_OFF;
                      R2_OFF;
                     
                      //ROW3
                      R3_ON;
                      L3_ON;     
                      L3_OFF;
                      R3_OFF;  
                     
                      //ROW4
                      R4_ON;
                      L3_ON;     
                      L3_OFF;
                      R4_OFF;  
                     
                      //ROW5
                      R5_ON;
                      L2_ON;     
                      L2_OFF;
                      R5_OFF;  
                      break;                    
                    case 10:
                      //ROW2
                      R2_ON;
                      L3_ON;     
                      L3_OFF;
                      R2_OFF;
                     
                      //ROW3
                      R3_ON;
                      L3_ON;     
                      L3_OFF;
                      R3_OFF;  
                     
                      //ROW4
                      R4_ON;
                      L3_ON;     
                      L3_OFF;
                      R4_OFF;  
                     
                      //ROW5
                      R5_ON;
                      L2_ON;     
                      L2_OFF;
                      R5_OFF;  
                     
                      //ROW6
                      R6_ON;
                      L3_ON;     
                      L3_OFF;
                      R6_OFF;
                      break;
                    case 11:
                      //ROW1
                      R1_ON;
                      L3_ON;     
                      L3_OFF;
                      R1_OFF;
                     
                      //ROW3
                      R3_ON;
                      L3_ON;     
                      L3_OFF;
                      R3_OFF;  
                     
                      //ROW4
                      R4_ON;
                      L3_ON;     
                      L3_OFF;
                      R4_OFF;  
                     
                      //ROW5
                      R5_ON;
                      L2_ON;     
                      L2_OFF;
                      R5_OFF;  
                     
                      //ROW6
                      R6_ON;
                      L3_ON;     
                      L3_OFF;
                      R6_OFF;
                      break;
                    case 12:                        
                      //ROW5
                      R5_ON;
                      L2_ON;     
                      L2_OFF;
                      R5_OFF;  
                     
                      //ROW6
                      R6_ON;
                      L3_ON;     
                      L3_OFF;
                      R6_OFF;
                      break;
                    case 13:                                               
                      //ROW6
                      R6_ON;
                      L3_ON;     
                      L3_OFF;
                      R6_OFF;
                      break;
                    case 14:                                               
                      //ROW2
                      R2_ON;
                      L2_ON;     
                      L2_OFF;
                      R2_OFF;
                      break;
                    case 15:                                               
                      //ROW2
                      R2_ON;
                      L2_ON;     
                      L2_OFF;
                      R2_OFF;
                     
                      //ROW3
                      R3_ON;
                      L2_ON;     
                      L2_OFF;
                      R3_OFF;
                      break;  
                    case 16:                                               
                      //ROW2
                      R2_ON;
                      L2_ON;     
                      L2_OFF;
                      R2_OFF;
                     
                      //ROW3
                      R3_ON;
                      L2_ON;     
                      L2_OFF;
                      R3_OFF;
                     
                      //ROW4
                      R4_ON;
                      L2_ON;     
                      L2_OFF;
                      R4_OFF;  
                     
                      //ROW5
                      R5_ON;
                      L3_ON;     
                      L3_OFF;
                      R5_OFF;
                      break;
                    case 17:                                               
                      //ROW2
                      R2_ON;
                      L2_ON;     
                      L2_OFF;
                      R2_OFF;
                     
                      //ROW3
                      R3_ON;
                      L2_ON;     
                      L2_OFF;
                      R3_OFF;
                     
                      //ROW4
                      R4_ON;
                      L2_ON;     
                      L2_OFF;
                      R4_OFF;  
                     
                      //ROW5
                      R5_ON;
                      L3_ON;     
                      L3_OFF;
                      R5_OFF;   
                     
                      //ROW6
                      R6_ON;
                      L2_ON;L1_ON;   
                      L2_OFF;L1_OFF;
                      R6_OFF;
                      break;  
                    case 18:                                               
                      //ROW1
                      R1_ON;
                      L2_ON;     
                      L2_OFF;
                      R1_OFF;
                     
                      //ROW3
                      R3_ON;
                      L2_ON;     
                      L2_OFF;
                      R3_OFF;
                     
                      //ROW4
                      R4_ON;
                      L2_ON;     
                      L2_OFF;
                      R4_OFF;  
                     
                      //ROW5
                      R5_ON;
                      L3_ON;     
                      L3_OFF;
                      R5_OFF;  
                     
                      //ROW6
                      R6_ON;
                      L2_ON;   
                      L2_OFF;
                      R6_OFF;
                      break;
                    case 19:                                                                     
                      //ROW4
                      R4_ON;
                      L2_ON;     
                      L2_OFF;
                      R4_OFF;  
                     
                      //ROW5
                      R5_ON;
                      L3_ON;     
                      L3_OFF;
                      R5_OFF;  
                     
                      //ROW6
                      R6_ON;
                      L2_ON;   
                      L2_OFF;
                      R6_OFF;
                      break;  
                    case 20:                                                                                          
                      //ROW5
                      R5_ON;
                      L3_ON;     
                      L3_OFF;
                      R5_OFF;  
                     
                      //ROW6
                      R6_ON;
                      L2_ON;   
                      L2_OFF;
                      R6_OFF;
                      break;
                    case 21:                                                                                                                 
                      //ROW6
                      R6_ON;
                      L2_ON;   
                      L2_OFF;
                      R6_OFF;
                      break;
                    case 22:                                                                                                                 
                      //ROW2
                      R2_ON;
                      L1_ON;   
                      L1_OFF;
                      R2_OFF;
                      break;
                    case 23:                                                                                                                 
                      //ROW2
                      R2_ON;
                      L1_ON;   
                      L1_OFF;
                      R2_OFF;
                     
                      //ROW3
                      R3_ON;
                      L1_ON;   
                      L1_OFF;
                      R3_OFF;
                      break;
                    case 24:                                                                                                                 
                      //ROW2
                      R2_ON;
                      L3_ON;   
                      L3_OFF;
                      R2_OFF;
                      break;
                    case 25:                                                                                                                 
                      //ROW2
                      R2_ON;
                      L3_ON;   
                      L3_OFF;
                      R2_OFF;
                     
                      //ROW3
                      R3_ON;
                      L3_ON;   
                      L3_OFF;
                      R3_OFF;
                      break;  
                    case 26:                                                                                                                 
                      //ROW2
                      R2_ON;
                      L2_ON;   
                      L2_OFF;
                      R2_OFF;
                      break;
                    case 27:                                                                                                                 
                      //ROW2
                      R2_ON;
                      L2_ON;   
                      L2_OFF;
                      R2_OFF;
                     
                      //ROW3
                      R3_ON;
                      L2_ON;   
                      L2_OFF;
                      R3_OFF;
                      break;
                     case 28:
                             sta=1;
                     break;
                        default:
                                sta=1;
                                break;   

                }           
}

使用特权

评论回复
沙发
supernan| | 2022-1-3 20:15 | 只看该作者
算一算闪烁的时间,和这个有关了。

使用特权

评论回复
板凳
juventus9554| | 2022-1-3 20:17 | 只看该作者
fun1是中断执行的函数么?到长时间执行一次?
sta是什么?什么情况下会被改变?
你的总体逻辑有点问题啊。

使用特权

评论回复
地板
huangchui| | 2022-1-3 20:22 | 只看该作者
应该是中断来了,关闭上次打开的LED,然后打开这次需要点亮的LED,然后中断的间隔时间才是LED点亮的时间,用扫描的方式可以控制单独点亮甚至单独闪烁。

使用特权

评论回复
5
chenjunt| | 2022-1-3 20:25 | 只看该作者
你的程序好长呀!
6行3列,1-28 case,如果更多,怎么办呀。

使用特权

评论回复
6
kangzj| | 2022-1-3 20:28 | 只看该作者
控制亮度,不控制时间长短的吗?

使用特权

评论回复
7
wyjie| | 2022-1-3 20:32 | 只看该作者
原理和思路搞清楚,亮度调整不是难事呀。

使用特权

评论回复
8
zwll| | 2022-1-3 20:34 | 只看该作者
什么中断里?定时器还是Io

使用特权

评论回复
9
xxmmi|  楼主 | 2022-1-3 20:36 | 只看该作者
我找到原因了,OFF之前延时一小段时间就好了,应该是关闭的太快了。。

使用特权

评论回复
10
juventus9554| | 2022-1-3 20:38 | 只看该作者

中断里面不应该加延时,重新规格一下程序结构更好。

使用特权

评论回复
11
llljh| | 2022-1-3 20:41 | 只看该作者
那就是刷新的太快了吧。一直在那开关开关,但就是开启后没有保持时间。你给出的程序的确是看不出问题的。主循环中没加延时吗?

使用特权

评论回复
12
xxmmi|  楼主 | 2022-1-3 20:43 | 只看该作者
我放中断执行的,主循环没有延时。。。

使用特权

评论回复
13
dengdc| | 2022-1-3 20:47 | 只看该作者
我想过放主循环,但是还是速率不行。。

使用特权

评论回复
14
renyaq| | 2022-1-3 20:49 | 只看该作者
供电功率够不够

使用特权

评论回复
15
xxmmi|  楼主 | 2022-1-3 20:52 | 只看该作者
你的函数 真的应该优化一下

使用特权

评论回复
16
zwll| | 2022-1-3 20:54 | 只看该作者
是不是你跳出中断之后有别的函数干扰了啊

使用特权

评论回复
17
heweibig| | 2022-1-3 20:56 | 只看该作者
感觉是功率的问题

使用特权

评论回复
18
stly| | 2022-1-3 20:59 | 只看该作者
可能是硬件上的问题?

使用特权

评论回复
19
renyaq| | 2022-1-3 21:01 | 只看该作者
应该 就是软件问题

使用特权

评论回复
20
xxmmi|  楼主 | 2022-1-3 21:04 | 只看该作者

嗯,那我按大家的说法挨个排查一下,谢谢哈

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

369

主题

4278

帖子

2

粉丝