找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2136|回復(fù): 1
收起左側(cè)

stm8單片機(jī)源程序如下:測(cè)速程序 含串口通信

[復(fù)制鏈接]
ID:551708 發(fā)表于 2019-5-31 11:03 | 顯示全部樓層 |閱讀模式
基于stm8 光電門測(cè)速系統(tǒng)  能夠與labview 和串口助手通信

單片機(jī)源程序如下:
  1. #include "stm8s.h"
  2. void GPIO_init_Config()
  3. {
  4.   GPIO_DeInit(GPIOB);
  5.   GPIO_DeInit(GPIOA);
  6.   GPIO_DeInit(GPIOC);
  7.   GPIO_Init(GPIOB,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_HIGH_FAST);
  8.   GPIO_Init(GPIOA,GPIO_PIN_HNIB,GPIO_MODE_IN_PU_IT);
  9. }
  10. //延時(shí)函數(shù),單位毫秒
  11. void delay_ms(u16 i)
  12. {
  13.   TIM2_DeInit();
  14.   TIM2_TimeBaseInit(TIM2_PRESCALER_2,999);
  15.   while(i--)
  16.   {
  17.      TIM2_Cmd(ENABLE);
  18.      while(TIM2_GetFlagStatus(TIM2_FLAG_UPDATE)!=1);
  19.      TIM2_ClearFlag(TIM2_FLAG_UPDATE);
  20.      TIM2_Cmd(DISABLE);
  21.   }
  22. }
  23. //TIM2初始化函數(shù)
  24. void TIM3_Cap_Init()
  25. {
  26.   TIM3_DeInit();
  27.   TIM3_TimeBaseInit(TIM3_PRESCALER_2,65535);
  28.   TIM3_ICInit(TIM3_CHANNEL_1,TIM3_ICPOLARITY_FALLING ,TIM3_ICSELECTION_DIRECTTI,TIM3_ICPSC_DIV1,0x00);
  29.   TIM3_ITConfig(TIM3_IT_CC1|TIM3_IT_UPDATE,ENABLE);
  30.   TIM3_CCxCmd(TIM3_CHANNEL_1,ENABLE);
  31.   enableInterrupts();
  32.   TIM3_Cmd(ENABLE);
  33. }

  34. //串口配置函數(shù)
  35. void USART_Init()
  36. {
  37.   UART2_DeInit();
  38.   UART2_Init((u32)9600,
  39.              UART2_WORDLENGTH_8D,
  40.              UART2_STOPBITS_1,
  41.              UART2_PARITY_NO,
  42.              UART2_SYNCMODE_CLOCK_DISABLE,
  43.              UART2_MODE_TXRX_ENABLE);
  44.   UART2_Cmd(ENABLE);
  45. }
  46. void USART_SendByte(u8 TxDate)
  47. {
  48.   UART2_SendData8(TxDate);
  49.   while(!UART2_GetFlagStatus(UART2_FLAG_TXE));
  50. }
  51. void USART_Write(u8* TxDate,u16 len)
  52. {
  53.   u16 i;
  54.   for(i=0;i<len;i++)
  55.   {
  56.     USART_SendByte(TxDate[i]);
  57.   }
  58. }
  59. u16 Cap_Val=0;
  60. u8 Cap_Sta=0;
  61. #pragma vector=18
  62. __interrupt void TIMER_IRQHander(void)
  63. {
  64.   if((Cap_Sta&0X80)==0)
  65.   {
  66. #pragma vector=17
  67.    if (TIM3_GetITStatus(TIM3_IT_UPDATE)==SET)
  68.    {
  69.      if(Cap_Sta&0X40)
  70.      {
  71.        if((Cap_Sta&0X3F)==0X3F)
  72.        {
  73.          Cap_Sta|=0X80;
  74.          Cap_Val=0XFFFF;  
  75.         }
  76.         else
  77.         {
  78.          Cap_Sta++;
  79.          }
  80.       }
  81.       TIM3_ClearITPendingBit(TIM3_IT_UPDATE);
  82.     }
  83.     if(TIM3_GetITStatus(TIM3_IT_CC1)==SET)
  84.     {
  85.       if(Cap_Sta&0X40)//捕獲到一個(gè)上升沿
  86.       {
  87.         Cap_Sta|=0X80;//標(biāo)記成功捕獲到一次低電平脈寬
  88.         Cap_Val=TIM3_GetCapture1();
  89.         TIM3_OC1PolarityConfig(TIM3_ICPOLARITY_FALLING);//設(shè)置為下降沿觸發(fā)
  90.       }
  91.       else//還未開始,第一次捕獲下降沿
  92.       {
  93.         Cap_Sta=0;
  94.         Cap_Val=0;
  95.         TIM3_SetCounter(0);
  96.         Cap_Sta|=0X40;//標(biāo)記捕獲到了下降沿
  97.         TIM3_OC1PolarityConfig(TIM3_ICPOLARITY_RISING);//設(shè)置為上升沿觸發(fā)
  98.       }
  99.     }
  100.   }
  101.   TIM3_ClearITPendingBit(TIM3_IT_CC1);
  102. }
  103. //主函數(shù)
  104. int main(void)
  105. {
  106.   u32 temp=0;
  107.   u8 s[10];
  108.   GPIO_init_Config();
  109.   TIM3_Cap_Init();
  110.   USART_Init();
  111.   GPIO_WriteHigh(GPIOB,GPIO_PIN_LNIB);
  112.   while(1)
  113.   {
  114.     if(Cap_Sta&0X80)
  115.     {
  116.       temp=Cap_Sta&0X3F;
  117.       temp*=65536;
  118.       temp+=Cap_Val;
  119.       Cap_Sta=0;
  120.       Cap_Val=0;
  121.     }
  122.     if(temp!=0)
  123.     {
  124.       GPIO_WriteReverse(GPIOB,GPIO_PIN_4);
  125.       //temp=0;
  126.       delay_ms(temp);
  127.       //GPIO_WriteReverse(GPIOB,GPIO_PIN_LNIB);
  128.       //delay_ms(temp/100000);
  129.     }
  130.    
  131.    }
  132. }
復(fù)制代碼

所有資料51hei提供下載:
定時(shí)器捕獲按鍵時(shí)長控制燈閃爍間隔.7z (425.53 KB, 下載次數(shù): 15)


回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2019-5-31 19:43 | 顯示全部樓層
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表