查看: 7480|回复: 10

[分享] 【LPC800项目】代码分享:点灯加强版+SCT的使用

[复制链接]
  • TA的每日心情
    开心
    2023-6-2 13:32
  • 签到天数: 272 天

    连续签到: 1 天

    [LV.8]以坛为家I

    44

    主题

    995

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    4413
    最后登录
    2023-6-2
    发表于 2016-12-5 12:33:56 | 显示全部楼层 |阅读模式
    之前发了个点灯程序,一行初始化,一行操作,简单易用有木有?

    下面,来个进阶的,

    VID_20161202_173106.gif

    输出的是三角波,不是正弦波,正弦波应该更漂亮吧.

    下面是代码,自己剪切下应该就能用了的.

    1. void Sct_init(void){
    2.     LPC_SYSCON->SYSAHBCLKCTRL|=SYSCON_SYSAHBCLKCTRL_SCT;
    3.     LPC_SYSCON->PRESETCTRL&=~SYSCON_PRESETCTRL_SCTRST_N;
    4.     LPC_SYSCON->PRESETCTRL|=SYSCON_PRESETCTRL_SCTRST_N;
    5.    
    6.     LPC_SCT->CONFIG&=~SCT_CONFIG_UNIFY;         /* 2 16-bits timer.*/
    7.     LPC_SCT->CONFIG|=SCT_CONFIG_AUTOLIMIT_L;    /* auto limit.*/
    8.    
    9.     LPC_SYSCON->SYSAHBCLKCTRL|=SYSCON_SYSAHBCLKCTRL_SWM;
    10.     Swm_set(SCT_OUT0,15);
    11.     Swm_set(SCT_OUT1,16);
    12.     Swm_set(SCT_OUT2,17);
    13.     LPC_SYSCON->SYSAHBCLKCTRL&=~SYSCON_SYSAHBCLKCTRL_SWM;
    14.    
    15.     LPC_SCT->MATCHREL_L[0]=5999;               /* match 0 @.*/
    16.     LPC_SCT->MATCH_L[0]=5999;
    17.     LPC_SCT->MATCH_L[1]=0;
    18.     LPC_SCT->MATCH_L[2]=3999;
    19.     LPC_SCT->MATCH_L[3]=3999;
    20.    
    21.     LPC_SCT->EVENT[0].STATE=0xFF;               /* event 0 happens in all state.*/
    22.     LPC_SCT->EVENT[0].CTRL=(1<<SCT_EVENT_CTRL_COMBMODE_SHIFT)|(0<<SCT_EVENT_CTRL_MATCHSEL_SHIFT);    /* match 0 condition only.*/
    23.    
    24.     LPC_SCT->EVENT[1].STATE=0xFF;               /* event1 happens in all state.*/
    25.     LPC_SCT->EVENT[1].CTRL=(1<<SCT_EVENT_CTRL_COMBMODE_SHIFT)|(1<<SCT_EVENT_CTRL_MATCHSEL_SHIFT);    /* match 1 condition only.*/
    26.    
    27.     LPC_SCT->EVENT[2].STATE=0xFF;               /* event2 happens in all state.*/
    28.     LPC_SCT->EVENT[2].CTRL=(1<<SCT_EVENT_CTRL_COMBMODE_SHIFT)|(2<<SCT_EVENT_CTRL_MATCHSEL_SHIFT);    /* match 2 condition only.*/
    29.    
    30.     LPC_SCT->EVENT[3].STATE=0xFF;               /* event2 happens in all state.*/
    31.     LPC_SCT->EVENT[3].CTRL=(1<<SCT_EVENT_CTRL_COMBMODE_SHIFT)|(3<<SCT_EVENT_CTRL_MATCHSEL_SHIFT);    /* match 3 condition only.*/
    32.    
    33.     LPC_SCT->CTRL_L|=SCT_CTRL_CLRCTR;           /* clears the L counter.*/
    34.     LPC_SCT->CTRL_L|=0<<SCT_CTRL_PRE_SHIFT;     /* 60M/1 =60M. 1/60us.*/
    35.    
    36.     LPC_SCT->OUT[0].SET=(1<<0);
    37.     LPC_SCT->OUT[0].CLR=(1<<1);
    38.    
    39.     LPC_SCT->OUT[1].SET=(1<<0);
    40.     LPC_SCT->OUT[1].CLR=(1<<2);
    41.    
    42.     LPC_SCT->OUT[2].SET=(1<<0);
    43.     LPC_SCT->OUT[2].CLR=(1<<3);
    44.    
    45.     LPC_SCT->OUTPUT|=(1<<0)|(1<<1)|(1<<2);
    46. }

    47. void Sct_start(void){
    48.     LPC_SCT->CTRL_L&=~SCT_CTRL_HALT;/* unhalt by clearing bit 2.*/
    49. }

    50. void Sct_stop(void){
    51.     while((LPC_SCT->COUNT_L<LPC_SCT->MATCH_L[1])&&(LPC_SCT->COUNT_L<LPC_SCT->MATCH_L[2])&&(LPC_SCT->COUNT_L<LPC_SCT->MATCH_L[3]));
    52.     LPC_SCT->CTRL_L|=SCT_CTRL_HALT;
    53.     LPC_SCT->OUTPUT|=(1<<0)|(1<<1)|(1<<2);
    54. }


    55.             if(light){
    56.                 if(dir==3000){
    57.                     dir=0;
    58.                 }
    59.                 switch(dir/500){
    60.                     case 0:{
    61.                         LPC_SCT->MATCHREL_L[1]=dir*STEP;
    62.                         LPC_SCT->MATCHREL_L[2]=3999-dir*STEP;
    63.                         LPC_SCT->MATCHREL_L[3]=3999+dir*STEP;
    64.                     }break;
    65.                     case 1:{
    66.                         LPC_SCT->MATCHREL_L[1]=dir*STEP;
    67.                         LPC_SCT->MATCHREL_L[2]=3999-dir*STEP;
    68.                         LPC_SCT->MATCHREL_L[3]=7999-dir*STEP;
    69.                     }break;
    70.                     case 2:{
    71.                         LPC_SCT->MATCHREL_L[1]=dir*STEP;
    72.                         LPC_SCT->MATCHREL_L[2]=dir*STEP-4000;
    73.                         LPC_SCT->MATCHREL_L[3]=7999-dir*STEP;
    74.                     }break;
    75.                     case 3:{
    76.                         LPC_SCT->MATCHREL_L[1]=11999-dir*STEP;
    77.                         LPC_SCT->MATCHREL_L[2]=dir*STEP-4000;
    78.                         LPC_SCT->MATCHREL_L[3]=7999-dir*STEP;
    79.                     }break;
    80.                     case 4:{
    81.                         LPC_SCT->MATCHREL_L[1]=11999-dir*STEP;
    82.                         LPC_SCT->MATCHREL_L[2]=dir*STEP-4000;
    83.                         LPC_SCT->MATCHREL_L[3]=dir*STEP-8000;
    84.                     }break;
    85.                     case 5:{
    86.                         LPC_SCT->MATCHREL_L[1]=11999-dir*STEP;
    87.                         LPC_SCT->MATCHREL_L[2]=15999-dir*STEP;
    88.                         LPC_SCT->MATCHREL_L[3]=dir*STEP-8000;
    89.                     }break;
    90.                     default:{
    91.                     }break;
    92.                 }
    93.                 dir++;
    94.             }
    复制代码
    SCT的功能还是十分强大的,不过,既然有8个L,8个H,为啥不搞16个event来,
    不过那也是简单的堆砌了.对于SCT来说,目的已经达到.


    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-12-22 14:33
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    34

    主题

    512

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1378
    最后登录
    1970-1-1
    发表于 2016-12-5 12:35:14 | 显示全部楼层
    不错啊
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2017-10-15 13:16
  • 签到天数: 191 天

    连续签到: 1 天

    [LV.7]常住居民III

    11

    主题

    664

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1722
    最后登录
    2017-10-15
    发表于 2016-12-5 13:34:46 | 显示全部楼层
    楼主这么快就收到了开发板,我的一个星期了还没发货
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2023-6-2 13:32
  • 签到天数: 272 天

    连续签到: 1 天

    [LV.8]以坛为家I

    44

    主题

    995

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    4413
    最后登录
    2023-6-2
     楼主| 发表于 2016-12-5 13:36:32 | 显示全部楼层
    jackten 发表于 2016-12-5 13:34
    楼主这么快就收到了开发板,我的一个星期了还没发货

    会到的,我的3天就到了.
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2017-10-15 13:16
  • 签到天数: 191 天

    连续签到: 1 天

    [LV.7]常住居民III

    11

    主题

    664

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1722
    最后登录
    2017-10-15
    发表于 2016-12-5 13:38:09 | 显示全部楼层
    andrewz 发表于 2016-12-5 13:36
    会到的,我的3天就到了.

    好桑心啊
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-11-30 16:16
  • 签到天数: 206 天

    连续签到: 1 天

    [LV.7]常住居民III

    74

    主题

    2793

    帖子

    5

    金牌会员

    Rank: 6Rank: 6

    积分
    7879
    最后登录
    2025-4-11
    发表于 2016-12-5 14:54:31 | 显示全部楼层
    老哥,稳啊
    来根华子
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2017-1-24 08:47
  • 签到天数: 49 天

    连续签到: 1 天

    [LV.5]常住居民I

    0

    主题

    524

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1267
    最后登录
    2017-4-19
    发表于 2016-12-5 15:18:51 | 显示全部楼层
    厉害                        
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16702
    最后登录
    1970-1-1
    发表于 2016-12-5 20:55:24 | 显示全部楼层
    不错,多谢分享
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-12-27 01:33
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    3

    主题

    31

    帖子

    0

    注册会员

    Rank: 2

    积分
    101
    最后登录
    2016-12-27
    发表于 2016-12-6 00:20:27 来自手机 | 显示全部楼层
    感谢楼主
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-1-21 08:52
  • 签到天数: 861 天

    连续签到: 1 天

    [LV.10]以坛为家III

    75

    主题

    2523

    帖子

    24

    金牌会员

    Rank: 6Rank: 6

    积分
    5867
    最后登录
    2025-1-22
    发表于 2016-12-6 08:45:38 | 显示全部楼层
    谢谢分享
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-21 22:27 , Processed in 0.102566 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表