新手入门
- 积分
- 3
- 金钱
- 3
- 注册时间
- 2021-1-19
- 在线时间
- 1 小时
|
6金钱
纯新手,最近学到了定时器。
我们可以知道定时器是可以自己生成pwm波的。
定时器中断也可以。
我自己想用stm32的板子做出一个光敏电阻根据外界光的大小改变通过改变占空比来控制led的亮度。
现在的问题是,我的led亮的不连续,而是呈现出闪烁,随着光的增强闪烁频率减小,最暗的时候已经达到了持续亮的效果。
我认为应该是参数的问题,但是弄了好久都没有弄出来,希望论坛各位大佬指教。
附代码:
定时器中断函数部分:
void TIM3_IRQHandler(void)
{
led0temp =Get_Adc_Average(ADC_Channel_1,10);//光强(adc检测)
led0temp =led0temp /40;
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update );
com++;
if(com==led0temp)
LED0 =0;
if(com==100)
{
com=0;
LED0 =1;
}
}
}
主函数部分(只留下重点):
u16 adcx;
float temp;
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init(115200);
LED_Init();
Adc_Init();
OLED_Init();
OLED_Clear() ;//我做的显示功能
TIM3_Int_Init (9,719);//这是我设置的时长
|
|