[菜农助学交流] 【第三批】基于RL-RTX实时操作系统的呼吸灯

[复制链接]
5886|7
 楼主| xianghou 发表于 2011-10-27 22:21 | 显示全部楼层 |阅读模式
本帖最后由 xianghou 于 2011-10-27 22:22 编辑

初始化代码:
  1. #include "NUC1xx.h"
  2. #include "drvsys.h"
  3. #include "drvgpio.h"
  4. #include "drvpwm.h"

  5. static void ClockInit( void )
  6. {
  7. UNLOCKREG();
  8. DrvSYS_SetOscCtrl( E_SYS_XTL12M, ENABLE );
  9. DrvSYS_SelectPLLSource( E_SYS_EXTERNAL_12M );
  10. DrvSYS_Open(48000000);
  11. DrvSYS_SelectSysTickSource( 3 );
  12. }

  13. static void PWMInit( void )
  14. {
  15. S_DRVPWM_TIME_DATA_T sPt;

  16. sPt.u8Mode = DRVPWM_AUTO_RELOAD_MODE;
  17. sPt.u8HighPulseRatio = 1; /* High Pulse peroid : Total Pulse peroid = 20 : 100 */
  18. sPt.i32Inverter = 0;
  19. sPt.u32Frequency = 1000; // Set 1KHz to PWM timer output frequency
  20. /* Select PWM engine clock */
  21. DrvPWM_SelectClockSource(DRVPWM_TIMER7, DRVPWM_EXT_12M);
  22. DrvPWM_Open();
  23. DrvGPIO_InitFunction(E_FUNC_PWM0);
  24. /* Set PWM Timer0 Configuration */
  25. DrvPWM_SetTimerClk(DRVPWM_TIMER0, &sPt);
  26. DrvPWM_SetTimerIO(DRVPWM_TIMER0, 1);
  27. DrvPWM_Enable(DRVPWM_TIMER0, 1);

  28. }

  29. void SystemInit( void )
  30. {
  31. ClockInit();
  32. PWMInit();
  33. }
程序代码

  1. #include "NUC1xx.h"
  2. #include <rtl.h>
  3. #include "drvgpio.h"
  4. #include "bsp.h"
  5. #include "drvpwm.h"
  6. __task void ledtask( void )
  7. {
  8. for( ;; )
  9. {  
  10.   S_DRVPWM_TIME_DATA_T sPt;  
  11.   static unsigned char sPulseRatio, sDir;
  12.   
  13.   if(sDir == 0)
  14.   {
  15.    sPulseRatio++;
  16.   }
  17.   else
  18.   {
  19.    sPulseRatio--;
  20.   }     
  21.   sPt.u8Mode = DRVPWM_AUTO_RELOAD_MODE;
  22.   sPt.u8HighPulseRatio = sPulseRatio;   
  23.   sPt.i32Inverter = 0;
  24.   sPt.u32Frequency = 1000;   // Set 1KHz to PWM timer output frequency
  25.   DrvPWM_SetTimerClk(DRVPWM_TIMER0, &sPt);   
  26.   if(sPulseRatio == 100)
  27.   {
  28.    sDir = 1;
  29.    os_dly_wait( 200 );
  30.   }
  31.   else if(sPulseRatio == 1)
  32.   {
  33.    sDir = 0;
  34.   }
  35.   os_dly_wait( 5 );
  36. }
  37. }
  38. __task void taskinit( void )
  39. {
  40. os_tsk_create(ledtask, 1);  //创建任务
  41. os_tsk_delete_self();   //删除自己
  42. for( ;; )
  43. {
  44. }
  45. }

  46. int main( void )
  47. {
  48. os_sys_init( taskinit ); //启动任务调度器
  49. while( 1 )
  50. {
  51. }
  52. }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
dong_abc 发表于 2011-10-29 15:27 | 显示全部楼层
继续顶RTX,曾经在51上弄了一下。
weshiluwei6 发表于 2011-10-30 13:24 | 显示全部楼层
继续RTX啊
hotpower 发表于 2011-11-1 14:26 | 显示全部楼层
俺也比较喜欢RTX,楼主有时间教俺。
rocket432 发表于 2012-6-30 17:05 | 显示全部楼层
楼主你的这个系统 稍微修改下,多加了几个任务怎么都跑不起来了
ceflsh 发表于 2013-8-4 19:53 | 显示全部楼层
学习学习,谢谢。
ilee123 发表于 2013-8-13 23:09 | 显示全部楼层
:victory:
wangch_sh 发表于 2013-8-21 14:34 | 显示全部楼层
extern void      rt_dly_wait (U16 delay_time);
请问这个函数在哪定义的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

105

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部