用STM8S单片机 ADC值变小到一定范围,使LED灯闪烁怎么做?
时间:10-02
整理:3721RD
点击:
用STM8S单片机 ADC值变小到一定范围,使LED灯闪烁(不能用while+delays)
LED的引脚(GPIOA, GPIO_PIN_3),求大神程序
我直接写的一个,大概意思就是这样的。
LED的引脚(GPIOA, GPIO_PIN_3),求大神程序
宏定义一个AD临界值,当小于这个数值的时候将灯闪烁的标志位由0置1,反之由1置0。
然后利用单片机的定时器,让灯闪烁,当标志位为1时使能这段代码,为0时不要使能这段代码。
当灯使能标志位由1变0时加一句话,就是让灯灭掉,保证灯不闪烁的时候状态是统一的。
是仿真还是
使用定时器给LED提供时基
设置PA3为PWM输出,当AD值小于指定时,输出PWM信号控制小灯闪
不懂 跟着小编一起学习一下
能说的更详细一些嘛,刚刚接触,有点不懂,最好有具体程序看看
我元旦期间给你回个简单代码哈
好的,谢谢
dsaaaaaaaaaaaaaaaaaaaaaaaaffsdafdsfdsf
- /*******************************************************************************
- * 名称: Time4_Init
- * 功能: 定时器4初始化
- * 形参: 无
- * 返回: 无
- * 说明: 定时器4用来一个2ms的时间基准
- ******************************************************************************/
- void Time4_Init(void)
- {
- TIM4_TimeBaseInit(TIM4_PRESCALER_128, 249);//理论定时中断时间8us*250=2MS
- TIM4_PrescalerConfig(TIM4_PRESCALER_128, TIM4_PSCRELOADMODE_IMMEDIATE);
- TIM4_ARRPreloadConfig(ENABLE);
- TIM4_ClearFlag(TIM4_FLAG_UPDATE);
- TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);
- TIM4_Cmd(ENABLE);
- }
- INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler, 23)
- {//2MS
- /* In order to detect unexpected events during development,
- it is recommended to set a breakpoint on the following instruction.
- */
- LedDrive(adFlag);
- TIM4_ClearITPendingBit(TIM4_IT_UPDATE);
- }
-
- void LedDrive(u8 flag)
- {
- static u8 ledTime = 0;
- if( 0 == Flag )
- {
- ledTime = 0;
- GPIO_WriteLow(GPIOD, GPIO_PIN_3);//针对写低灭灯的接法
- return;
- }
- ledTime++;
- if( ledTime > 250 )
- {
- GPIO_WriteReverse(GPIOC, GPIO_PIN_7);//根据具体的灯接口改一下这个
- ledTime = 0;
- }
- }
- void main(void)
- {
- while(1)
- {
- if(adValue < ADNUM)
- adFlag = 1;
- else
- adFlag = 0;
- }
- }
我直接写的一个,大概意思就是这样的。
恩,我自己研究一下,谢谢喽
有点道理
