📄 main.c
字号:
/***************************************************************
Date: 2007 03 09
Description: IM-Robot main function
***************************************************************/
#include "IM_Robot.h"
#include "math.h"
UInt16 Err_now = 0, Err_abs = 0, Pos_now = 0, Pos_goal = 0;
UInt16 temp = 0, i = 0, j = 0;
int main()
{
Disable_IRQ();
System_Init();
asm("int irq\n");
Set_Clock(14, 52, 55);
Set_Alarm(14, 53, 0);
while(1)
{
}
return 0;
}
void System_Init()
{
*P_Clock_Ctrl = 0x8400; // Enable PLL, System clk is PLL clk,
// 32768Hz weak mode, IOB0 32768Hz output disable,
// IOA and IOB wake up function disable, SYSCLK is PLL(48MHz)
*P_LVR_Ctrl = 0x0002; // Disable Low Voltage Reset function
/************** GPIO setting **************/
// IOA
*P_IOA_Data = 0x0000; // Set IOA[15:0] as output 0x0000
*P_IOA_Attrib = 0xFFFF; // IOA[1:0] control motor rotate direction (output)
*P_IOA_Dir = 0xFFFF;
// IOB
*P_IOB_Data = 0x0000; // Set IOB[15:0] as output 0x0000
*P_IOB_Attrib = 0xFFFF; // IOB[1:0] are PWM output
*P_IOB_Dir = 0xFFFF;
//IOC
*P_IOC_Data = 0x0000;
*P_IOC_Attrib = 0xFFFF;
*P_IOC_Dir = 0xFFFF;
}
void Set_Clock(UInt16 Hr, UInt16 Min, UInt16 Sec)
{
*P_Second = Sec;
for(i=0; i<50000; i++); // delay 2 cycles of 32768Hz
*P_Minute = Min;
for(i=0; i<50000; i++);
*P_Hour = Hr;
for(i=0; i<50000; i++);
*P_RTC_Ctrl = 0x8700; // Enable RTC, Hr/Min/Sec, alarm
*P_RTC_INT_Ctrl = 0x400; // enable alarm
}
void Set_Alarm(UInt16 Hr, UInt16 Min, UInt16 Sec)
{
*P_Alarm_Second = Sec;
*P_Alarm_Minute = Min;
*P_Alarm_Hour = Hr;
}
/*void IRQ7(void) __attribute__ ((ISR));
void IRQ7(void)
{
if (RTC_INT_Status_Reg->B.ALMIF_C == 1)
{
RTC_INT_Status_Reg->B.ALMIF_C = 1; // clear flag
IOA_Data_Reg->W = 0x1111;
}
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -