基于stm32的测幅度测频率程序
单片机源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "usart.h"
- #include "adc.h"
- #include "delay.h"
- #include "stm32f10x.h"
- #include "oled.h"
- #include "stm32f10x_exti.h"
- #include "NVIC.h"
- #include "TIM.h"
- #include "OLED_Display.h"
- vu8 flag_OK;
- float num;
- void All_Init(void);
- float a=0;
- float b;
- int main()
- {
- flag_OK = 0;
-
- All_Init();
-
- while(1)
- {
- // flag_OK = 1;
- // if(TIM2->CNT>58000)
- // {
- // a=1;
- // }
- // b=Get_Adc(1);
- // b=b*3.3/4096+0.58;
- // delay_ms(100);
- // USART_SendData(USART1, b);
- b = USART_ReceiveData(USART1);
- OLED_Display();
-
- }
- }
- void TIM6_IRQHandler(void) //定时器6全局中断函数
- {
- if(TIM_GetITStatus(TIM6,TIM_IT_Update) )
- {
-
- num = TIM2->CNT;
- num*=1.f;
- num=num+a*65535;
- a=0;
- TIM2->CNT=0;
- TIM_ClearITPendingBit(TIM6,TIM_IT_Update);
- }
- }
- void All_Init(void)
- {
- delay_init();
- NVICx_Init();
- TIM2_Count_Init();
- OLED_Init(); //OLED初始化
- OLED_Clear(); //OLED清屏
- TIM6_Init(18000,4000);
- Adc_Init();
- }
复制代码
所有资料51hei提供下载:
正弦波测频率测幅值.rar
(667.89 KB, 下载次数: 110)
|