[其他MCU] LPC54102 让M4变送脉冲输出

[复制链接]
 楼主| 春风的暖暖 发表于 2016-1-7 21:16 | 显示全部楼层 |阅读模式
目的:将液位(角度)百分比按0~10000HZ频率的脉冲输出


//频率输出 P0。19脚输出频率
占用硬件资源   Timer0(端口P0。19)






一、初始化T0
  1. void Init_Timer0(void)

  2. {

  3.         uint32_t timerBaseClock;

  4.       

  5. /* Initialize Timer 0 and Timer 1 */

  6.         Chip_TIMER_Init(LPC_TIMER0);



  7.         /* Setup prescale value on Timer 0 to PCLK */

  8.         Chip_TIMER_PrescaleSet(LPC_TIMER0, 0);


 楼主| 春风的暖暖 发表于 2016-1-7 21:17 | 显示全部楼层
  1.   /* Reset timers */

  2.         Chip_TIMER_Reset(LPC_TIMER0);



  3.         /* 使能定时器时间相匹配时产生中断 */

  4.         //Chip_TIMER_MatchEnableInt(LPC_TIMER0, 1);



  5.         /* 获取定时器基本时钟速率 */

  6.         timerBaseClock = Chip_Clock_GetAsyncSyscon_ClockRate();  //timerBaseClock=12MHZ



  7.         /* 设置定时器0的每1秒匹配 */

  8.         Chip_TIMER_SetMatch(LPC_TIMER0, 1, (timerBaseClock /1000 ));//上电默认

  9.          

  10.         //Initial state of the pin, high(1) or low(0)

  11.         //MATn

  12.         Chip_TIMER_ExtMatchControlSet(LPC_TIMER0, 0, TIMER_EXTMATCH_TOGGLE, 1);
 楼主| 春风的暖暖 发表于 2016-1-7 21:18 | 显示全部楼层
  1. /* 设置两个定时器匹配发生时,重新开始 */

  2.         Chip_TIMER_ResetOnMatchEnable(LPC_TIMER0, 1);

  3.       

  4.         /* Start both timers */

  5.         Chip_TIMER_Enable(LPC_TIMER0);



  6. }
 楼主| 春风的暖暖 发表于 2016-1-7 21:19 | 显示全部楼层
二、更新输出频率
  1. /*******************************************************************************

  2. *

  3. *

  4. *   输入需要的频率fre)

  5. *******************************************************************************/

  6. void Out_Fre(uint32_t fre)

  7. {



  8.         Chip_TIMER_SetMatch(LPC_TIMER0, 1, (12000000 /2/fre ));

  9.       

  10.         /* Reset timers */

  11.         Chip_TIMER_Reset(LPC_TIMER0);

  12.         /* Start both timers */

  13.         Chip_TIMER_Enable(LPC_TIMER0);

  14. }

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

本版积分规则

37

主题

306

帖子

2

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

37

主题

306

帖子

2

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