您现在的位置: 主页 > 嵌入式开发入门到精通 > 单片机技术进阶 > PIC32MZ tutorial -- Blinky LED -
本文所属标签:
为本文创立个标签吧:

PIC32MZ tutorial -- Blinky LED -

来源: 网络用户发布,如有版权联系网管删除 2018-09-08 

[导读]  Today I finish the "Blinky LED" application on PIC32MZ starter kit. This application let LED1 blink with 0.5HZ frequency. The pseudo code is like LOOP: LED ON Delay 1 second LED OFF D

  Today I finish the "Blinky LED" application on PIC32MZ starter kit. This application let LED1 blink with 0.5HZ frequency. The pseudo code is like

本文引用地址: http://www.21ic.com/app/mcu/201808/782674.htm


LOOP:

LED ON

Delay 1 second

LED OFF

Delay 1 second

  It uses Timer1 to control the delay time. So first I implement the three Timer1 functions.



/**

Function: TMR1_Open


Summary: Initialization of Timer


Description: TMR1 on; 0.08 microsecond every tick


Remarks: Pre-scale 1:8; PB 100MHz; PR1 0xFFFF

*/

void TMR1_Open(void)

{

T1CON = 0x8010;

PR1 = 0xFFFF;

}

// Comment a function definition and leverage automatic documentation

/**

Function: TMR1_Write


Summary: Write TMR1


Description: Write a value to TMR1


Remarks: the value is range of 0~65535

*/

void TMR1_Write(unsigned int value)

{

TMR1 = value & 0xFFFF;

}

/**

Function: TMR1_Read


Summary: Read TMR1


Description: Read the value from TMR1


Remarks: the value is range of 0~65535

*/

unsigned int TMR1_Read(void)

{

return (TMR1 & 0xFFFF);

}


  Second I finish the delay function, the implemention is like below



/**

Function: Delay_1S


Summary: Delay using TMR1


Description: Delay one second


Remarks: call TMR1_Open first

*/

void Delay_1S(void)

{

unsigned int count = 12500;

unsigned int ticks = 1000;

while (count--)

{

TMR1_Write(0);

while (TMR1_Read() < ticks)

{

; // do nothing

}

}

}


  Actually we are also able to do that like below



/**

Function: Delay_1S


Summary: Delay using TMR1


Description: Delay one second


Remarks: call TMR1_Open first

*/

void Delay_1S(void)

{

unsigned int count = 1000;

unsigned int ticks = 12500;

while (count--)

{

TMR1_Write(0);

while (TMR1_Read() < ticks)

{

; // do nothing

}

}

}


  I prefer to the second one. I believe the second one has higher accuracy than the first one.


  In the end, I finish the main function. In last blog, I already show how to implement LED_SETON. This time, we will the same LED_SETON funtion, and more, we need to implement LED_SETOFF. That's easy once you have read my last blog. If you don't know yet, please look at below.



#include

#include "Delay.h"

#include "ConfigurationBits.h"


#define LED_IOCTL() TRISHCLR = (1<<0)

#define LED_SETON() LATHSET = (1<<0)

#define LED_SETOFF() LATHCLR = (1<<0)

#define LED_OPEN() ANSELH &= 0xFFFFFFFE


void main(void)

{

TMR1_Open();

LED_OPEN();

LED_IOCTL();

while (1)

{

LED_SETON();

Delay_1S();

LED_SETOFF();

Delay_1S();

}

}





              查看评论 回复



 

"PIC32MZ tutorial -- Blinky LED -"的相关文章

网站地图

围观()