高杯脚 发表于 2019-8-10 09:00:40

STM8S003红外发送

编码器初次上电时,可读目标板的地址;过半个小时不能读取时什么原因;图纸为目标板的红外发送电路图。

toofree 发表于 2019-8-12 09:58:48

图上电路能工作,你要是怀疑这个器件有问题。
那么示波器测一下R11两端的波形,如果波形是好的,那么换一只IR333C-A试试。

weiwei4 发表于 2019-8-12 11:17:17

图怎么不翻转一下再发呢
R16的电阻太大了,你可以实际算一下R16的电流是多少,R11的电流(也就是发射管的电流)是多少
电阻太大,三极管实际工作在放大区域,这样不太好

高杯脚 发表于 2019-8-14 16:56:20

大神:大家好;
sendwanbi_flag=1;//防止进入外部中断                          
disableInterrupts();                                         
GPIOC->CR2 &= (uint8_t)(~(GPIO_PIN_4));
delay_us(20000);                                     
IR_send_message(0xa2,~address1,address1);
delay_us(6000);                          
                                     
GPIOC->CR2 |= (uint8_t)GPIO_PIN_4;                          
TIMER_Initializes();                           
UART_Initializes();                                                                
sendwanbi_flag=0;                  
shake_flag=1;//读成功闪标志       
                          
enableInterrupts();       
红外发送数据程序,程序走到enableInterrupts();出现死机现象???求助。

高杯脚 发表于 2019-8-14 17:13:52

高杯脚 发表于 2019-8-14 16:56
大神:大家好;
sendwanbi_flag=1;//防止进入外部中断                          
disableInterrupts();                                         


图纸上面的图;芯片是STM8S003

高杯脚 发表于 2019-8-14 17:14:54

weiwei4 发表于 2019-8-12 11:17
图怎么不翻转一下再发呢
R16的电阻太大了,你可以实际算一下R16的电流是多少,R11的电流(也就是发射管的电 ...

大神:大家好;
sendwanbi_flag=1;//防止进入外部中断                           
disableInterrupts();                                             
GPIOC->CR2 &= (uint8_t)(~(GPIO_PIN_4));
delay_us(20000);                                    
IR_send_message(0xa2,~address1,address1);
delay_us(6000);                           
                                       
GPIOC->CR2 |= (uint8_t)GPIO_PIN_4;                           
TIMER_Initializes();                           
UART_Initializes();                                                                  
sendwanbi_flag=0;                  
shake_flag=1;//读成功闪标志      
                           
enableInterrupts();      
红外发送数据程序,程序走到enableInterrupts();出现死机现象???求助。芯片是STM8S003

高杯脚 发表于 2019-8-15 09:46:21

已解决。
使用的中断比较多,当disableInterrupts()后,实际是CPU CC寄存器中断位I1和I0全部置1,也就是3级(禁用软件优先级)属于最高优先级;当enableInterrupts()后,CPU CC寄存器中断位:I1位置1,I0位清0,也就是0级(主程序) ,属于最低优先级别,换句话说,此时任何新的或待处理的中断请求都可以中断或打断当前的执行程序, 所以问题是 中断优先级而导致的问题。
sendwanbi_flag=1;//防止进入外部中断                          
                           //asm("sim");//关全局中断                                                            
                           GPIOC->CR2 &= (uint8_t)(~(GPIO_PIN_4));//关外部中断
                           TIM4_Cmd(DISABLE);//禁止定时器中断
                           TIM2_Cmd(DISABLE);//禁止定时器中断                          
                           delay_us(20000);                                     
                           IR_send_message(0xa2,~address1,address1);
                           delay_us(6000);                                                                
                           GPIOC->CR2 |= (uint8_t)GPIO_PIN_4;//开外部中断
                           sendwanbi_flag=0;
                           TIM4_Cmd(ENABLE);//使能外部中断
                           TIM2_Cmd(ENABLE);//使能外部中断                          
                           //TIMER_Initializes();                           
                           //UART_Initializes();
                           //TIM2_Cmd(ENABLE);
                   //TIM4_Cmd(ENABLE);
                           //asm("rim");//开全局中断                  
                           shake_flag=1;//读成功闪标志       

具体的解释参考:http://mp.weixin.qq.com/s/ScX5Y50K9jD6VUnORkWsmw
我就是看这个资料得到的结果;谢谢您提供的资料。

高杯脚 发表于 2019-8-15 09:48:47

已解决

高杯脚 发表于 2019-8-15 09:49:45

参考资料:http://mp.weixin.qq.com/s/ScX5Y50K9jD6VUnORkWsmw
页: [1]
查看完整版本: STM8S003红外发送