完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include "CH552.H"
#include "Debug.H" #include "timer.H" #include "stdio.h" #include "GPIO.H" #pragma NOAREGS //UINT8 FLAG; //UINT16 Cap[8] = {0}; //typedef unsigned int uint16_t; sbit LED1 = P3^4; sbit led2 = P1^3; sbit key = P1^4; unsigned int condition=0;//这里高电平占一份 unsigned int cnt; //整个周期 void button(); void main( ) { CfgFsys( ); //CH554时钟选择配置 mDelaymS(5); //修改主频,建议稍加延时等待主频稳定 Port3Cfg(1,4); Port1Cfg(1,3); Port1Cfg(3,4); mTimer0Clk12DivFsys(); //T0定时器时钟设置 mTimer_x_ModInit(0,2); //T0 定时器模式设置 mTimer_x_SetData(0,0x5555); //T0定时器赋值 mTimer0RunCTL(1); //T0定时器启动 ET0 = 1; //T0定时器中断开启 EA = 1; while(1) { if(cnt>=100) { LED1=0; } if(cnt<condition) { LED1=1; } else { LED1=0; } button(); } } void Time0Interrupt(void) interrupt INT_NO_TMR0 using 1 { mTimer_x_SetData(0,0x5555); //T0定时器赋值 cnt++; } void button() { if(key==0) { mDelaymS(5); if(key==0) { condition=condition+30; //调制脉宽 led2=!led2;//led灯反转 if(condition>=90)//如果脉宽等于总周期了等于0 { condition=90; } while(!key); //等待按键松手 } } } |
|
相关推荐
1个回答
|
|
您好,您说的脉宽是LED1输出的波形吗?这个引脚的波形是如何测试的?
LED1输出高电平是cnt 按键按3次之后高电平时间固定,按照您的代码逻辑大致是这样的。 您是如何判断引脚脉宽的?以及是如何实现修改这个脉宽的? cnt的高电平占比在周期中最大应该就是90/65536,脉宽从占比上来说很低 不知我理解的有没有问题 |
|
|
|
只有小组成员才能发言,加入小组>>
474 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2873 浏览 2 评论
2361 浏览 1 评论
817浏览 2评论
CH569通过HSPI实现USB3.0和FPGA高速双向通讯
640浏览 1评论
498浏览 1评论
CH32F103C8T6使用当前官网上的CDC例程会出现设备描述符请求失败
364浏览 1评论
639浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 12:11 , Processed in 2.127422 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号