单片机源程序如下:
- #include "stm32f10x.h"
- #include "bsp_usart.h"
- #include "bsp_Timer.h"
- #include "OLED_I2C.h"
- #include "bsp_SysTick.h"
- uint16_t t = 0;
- double speed = 0 ;
- uint16_t btime = 0;
-
- int main(void)
- {
- double time;
- double CLK;
- unsigned char a[10];
-
- USART_Config();
- TIMER_Init();
- SysTick_Init(); //初始化延迟函数
- I2C_Configuration(); //配置CPU的硬件I2C
- OLED_Init(); //初始化OLED
- OLED_Fill(0xFF); //全屏点亮
- Delay_s(2); // 2s
- OLED_Fill(0x00); //全屏灭
- Delay_s(2); // 2s
- CLK = 72000000/(71+1);
- printf("\r\n 测速 KEY1\n");
- while (1)
- {
- if(TIM_ICUserStructure.Capture_FinishingFlag == 1 && t==50)
- {
- time=TIM_ICUserStructure.Capture_Period*(0xffff+1)+(TIM_ICUserStructure.Capture_CcrValue+1);
- speed=1/((time/CLK)*20);
- sprintf((char *)a,"%.2lf",speed);
- printf("\r\n 测得一个脉冲时间 %f s 当前速度为 %f r/s\r\n",time/CLK,speed);
- TIM_ICUserStructure.Capture_FinishingFlag = 0;
- OLED_ShowStr(55,3,a,2); //测试8*16字符
- t=0;
- }
- }
- }
复制代码
所有资料51hei提供下载:
测速 (T法) - OLED.7z
(192.84 KB, 下载次数: 31)
|