找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2125|回复: 1
打印 上一主题 下一主题
收起左侧

stm8单片机源程序如下:测速程序 含串口通信

[复制链接]
跳转到指定楼层
楼主
ID:551708 发表于 2019-5-31 11:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于stm8 光电门测速系统  能够与labview 和串口助手通信

单片机源程序如下:
  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. //延时函数,单位毫秒
  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初始化函数
  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. //串口配置函数
  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)//捕获到一个上升沿
  86.       {
  87.         Cap_Sta|=0X80;//标记成功捕获到一次低电平脉宽
  88.         Cap_Val=TIM3_GetCapture1();
  89.         TIM3_OC1PolarityConfig(TIM3_ICPOLARITY_FALLING);//设置为下降沿触发
  90.       }
  91.       else//还未开始,第一次捕获下降沿
  92.       {
  93.         Cap_Sta=0;
  94.         Cap_Val=0;
  95.         TIM3_SetCounter(0);
  96.         Cap_Sta|=0X40;//标记捕获到了下降沿
  97.         TIM3_OC1PolarityConfig(TIM3_ICPOLARITY_RISING);//设置为上升沿触发
  98.       }
  99.     }
  100.   }
  101.   TIM3_ClearITPendingBit(TIM3_IT_CC1);
  102. }
  103. //主函数
  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. }
复制代码

所有资料51hei提供下载:
定时器捕获按键时长控制灯闪烁间隔.7z (425.53 KB, 下载次数: 15)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2019-5-31 19:43 | 只看该作者
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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