日韩在线不卡免费视频一区,日韩欧美精品一区二区三区经典,日产精品码2码三码四码区,人妻无码一区二区三区免费,日本feerbbwdh少妇丰满

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

求路過的高手幫忙指點(diǎn)下STM8S003單片機(jī)串口接受DMX512信號中斷函數(shù)問題

弟這幾天一直在研究STM8S003F單片機(jī)接受DMX512信號串口中斷程序,自己寫了段調(diào)試下發(fā)現(xiàn)一直進(jìn)不去,麻煩有明白的幫忙指點(diǎn)下,小弟不勝感激,謝謝!本人郵箱 770510477@qq.com,是一個(gè)單片機(jī)愛好者,但是自身基礎(chǔ)太差,往見效,謝謝!

以下為我的部分代碼:

(主函數(shù))

#include "clk_conf.h"
#include "Tim1.h"
#include "GPIO.h"
#include "Delay.h"

//static unsigned char break1=0;
//unsigned char RxData[512]; //接收數(shù)據(jù)緩存區(qū)
extern FlagStatus DMX_display;
extern unsigned char pwm[3]; //pwm接收數(shù)據(jù)緩存區(qū)

int main( void )
{
  //u8 i;  
  Clk_conf();
  Init_UART1();
  Tim1_PWM_conf(255,TIM1_DIV1); //16M   f=16/256
  //DMX_display=0;
  Delay_MS();  
  EnableInterrupt;
 while(1)
  {
    if(DMX_display)
    { 
    To_PWM_output(pwm[0],pwm[1],pwm[2]);
    DMX_display=0 ;
    }
   else {To_PWM_output(0,0,255);}//無信號
  }

}  

(uart函數(shù))
#include "iostm8s003f3.h"
#include "Tim1.h"
unsigned char pwm[3];//接收數(shù)據(jù)緩存區(qū) 
FlagStatus  DMX_display;

/*************************************  
* 函數(shù)名稱:Init_UART1  
* 函數(shù)功能:UART1 初始化
* 入口參數(shù):無  
* 出口參數(shù):無  
****************************************/
void Init_UART1(void)
{     
 // CLK_PCKENR1 |= 0X04;  //使能USART1時(shí)鐘 
  
  UART1_CR1=0x10; //9位數(shù)據(jù)+1stop
  UART1_CR2=0x00;
  UART1_CR3=0x00;//1 stop
  // 必須先寫B(tài)RR2
  // 例如對于波特率位250000時(shí),分頻系數(shù)=16000000/250000=64
  // 對應(yīng)的十六進(jìn)制數(shù)為0040,BBR1=04,BBR2=00
  
  UART1_BRR2=0x00;
  UART1_BRR1=0x04;
  
  UART1_CR2=0x2c;//允許接收,發(fā)送,開接收中斷
}


/*************************************  
* 函數(shù)名稱:UART1_RX_RXNE 
* 函數(shù)功能:UART1 接收中斷函數(shù)
* 入口參數(shù):無  
* 出口參數(shù):無  
****************************************/

#pragma vector=UART1_R_RXNE_vector
__interrupt void UART1_RX_RXNE(void)
{
  unsigned char RxBuf;        //臨時(shí)接收
  unsigned char RxData[4]; //臨時(shí)接收數(shù)據(jù)緩存區(qū)                                 
  unsigned int address_counter=0;      //串口接收數(shù)據(jù)長度                                        
  FlagStatus  start_code=0;    //判斷start_code
  FlagStatus  break1=0;  //判斷break 
  if(UART1_SR_RXNE)
 {
    UART1_SR_RXNE=0;   //清RXNE
     if(UART1_CR1_R8==0)   //判斷第九位
       {
        break1=1;
        start_code=0;
        address_counter=0;
        DMX_display=0;
        }
      if(break1)
    { 
       RxBuf=UART1_DR;
      if((address_counter==0)&&(RxBuf==0))
      {
         start_code=1;address_counter=0;
        
        if(start_code)
       {
         RxData[address_counter++] = RxBuf; 
         address_counter++; 
         if(address_counter>3)
         {
          DMX_display=1;
          pwm[0]= RxData[1];
          pwm[1]= RxData[2];
          pwm[2]= RxData[3];
          break1=0; start_code=0; address_counter=0;
         } 
       } 
    }
  }
 }
}    

  

全部回復(fù)(3)
正序查看
倒序查看
flying123
LV.6
2
2018-11-06 08:11
幫頂
0
回復(fù)
松松man
LV.1
3
2018-11-07 21:39
@flying123
幫頂
謝謝!
0
回復(fù)
2020-10-24 20:08
專業(yè)生產(chǎn)1-300W  DMX512驅(qū)動(dòng)  , 廣泛應(yīng)用于投光燈,洗墻燈,抱柱燈,燈帶,水底燈,地埋燈,瓦楞燈,步道燈等戶外照明,景觀亮化,樓體亮化,文旅亮化。提供樣板以及技術(shù)支持,承接電子產(chǎn)品開發(fā),非標(biāo)方案開發(fā)定制,控制系統(tǒng)配套,并可實(shí)地協(xié)助調(diào)試!  歡迎來電咨詢索樣業(yè)務(wù)部  黃S 15773375193
0
回復(fù)
發(fā)