The 5 Critical Steps to Success

本文阐述了通往成功的五个关键步骤:欲望是动力之源,现身是实现目标的必要条件,面对失败并从中学到经验,付出额外的努力,并享受追求梦想的过程。成功不仅仅是终点,更是旅途中的快乐。

‎”If any young man expects, without faith, without thought, without study, without patient persevering labor, in the midst of and in spite of discouragement, to attain anything in this world that is worth attaining, he will simply wake up, by-and-by, and find that he has been playing the part of a fool.” ~M.J. Savage

It’s important that we remember the price of success! 

Success does not belong to a select group of individuals; success belongs to those who are willing to go after it.  Success belongs to those who are willing to look fear in the face, eyeball to eyeball, and then do what they have to do. 

Success belongs to those who realize that there is something more important than their fear.

The 5 Critical Steps to Success:

1. Desire

“Desire is the key to motivation….” ~Mario Andretti

Desire is the longing to achieve a vision; without desire you have nothing.

If you’ve lost your vision, or if your desire is not strong, work to clarify your vision, use pictures, write the vision down. Habakkuk said, “Write the vision, and make it plain, that he may run that readeth it.” Before you can run with desire, your vision must be plain, it must be clear, it must be exciting.

2. Show Up

“Seventy percent of success in life is showing up.” ~Woody Allen

You can’t have a best seller, if you’ve never written a book. You can’t get your dream job, if you’re scared to turn in an application. You won’t get the sale, if you don’t try. Showing up doesn’t guarantee success, but rest assured if you don’t show up, you won’t succeed. When it comes to your dreams, and the things you desire to achieve in this life, you have to show up.

3. Fail

“Unless you’re willing to have a go, fail miserably, and have another go, success won’t happen.” ~Phillip Adams

To have success you have to do things the right way, but often the only way to do something right, is to first fail at it. Thomas J. Watson said, “Would you like me to give you a formula for success? It’s quite simple, really. Double your rate of failure. You are thinking of failure as the enemy of success. But it isn’t at all. You can be discouraged by failure or you can learn from it, so go ahead and make mistakes. Make all you can. Because remember that’s where you will find success.” Never fear failure, it is failure that will bring you success. Embrace failure, become a student of failure, learn from failure, and soon you will succeed.

4. Work Harder

“Success: willing to do what the average person is not willing to do.” ~Anonymous

Everyone runs, but everyone is not willing to run for an hour everyday. Success is not about doing what the average person can’t do, it’s about doing what the average person is unwilling to do. And on a deeper level, it’s about creating habits that the average person is unwilling to create. It’s the habit of doing things with excellence that cause success. Charles Kendall Adams said, “No one ever attains very eminent success by simply doing what is required of him; it is the amount and excellence of what is over and above the required that determines the greatness of ultimate distinction.”

5. Enjoy the Journey

“Success is a journey, not a destination.” ~Ben Sweetland

Success is not a certain car or a certain house or a certain spouse or certain kids. Success is the enjoyment of the journey. You have to enjoy the journey!

In Closing

Someone once said, “Unless you change how you are, you will always have what you’ve got.” You have to change…you will change, you will succeed.

Thank you for reading and be sure to pass this article along!

Click here to view my latest mini-audiobooks for $3.99.  Thank you for reading mrselfdevelopment.com, where every article increases your faith, expands your mind, and changes your life.

Related Articles

/****************************************************************************** * * Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * XILINX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * * Except as contained in this notice, the name of the Xilinx shall not be used * in advertising or otherwise to promote the sale, use or other dealings in * this Software without prior written authorization from Xilinx. * ******************************************************************************/ /*****************************************************************************/ /** * @file xttcps_rtc_example.c * * This example uses one timer/counter to make a real time clock. The number of * minutes and seconds is displayed on the console. * * * @note * * <pre> * MODIFICATION HISTORY: * * Ver Who Date Changes * ---- ------ -------- --------------------------------------------- * 1.00 drg/jz 01/23/10 First release * 3.01 pkp 01/30/16 Modified SetupTimer to remove XTtcps_Stop before TTC * configuration as it is added in xttcps.c in * XTtcPs_CfgInitialize * 3.2 mus 10/28/16 Updated TmrCntrSetup as per prototype of * XTtcPs_CalcIntervalFromFreq * ms 01/23/17 Modified xil_printf statement in main function to * ensure that "Successfully ran" and "Failed" strings * are available in all examples. This is a fix for * CR-965028. *</pre> ******************************************************************************/ /***************************** Include Files *********************************/ #include <stdio.h> #include <stdlib.h> #include "xparameters.h" #include "xstatus.h" #include "xil_io.h" #include "xil_exception.h" #include "xttcps.h" #include "xscugic.h" #include "xil_printf.h" /************************** Constant Definitions *****************************/ /* * The following constants map to the XPAR parameters created in the * xparameters.h file. They are only defined here such that a user can easily * change all the needed parameters in one place. */ #define TTC_TICK_DEVICE_ID XPAR_XTTCPS_0_DEVICE_ID #define TTC_TICK_INTR_ID XPAR_XTTCPS_0_INTR #define INTC_DEVICE_ID XPAR_SCUGIC_SINGLE_DEVICE_ID /* * Constants to set the basic operating parameters. * PWM_DELTA_DUTY is critical to the running time of the test. Smaller values * make the test run longer. */ #define TICK_TIMER_FREQ_HZ 100 /* Tick timer counter's output frequency */ #define TICKS_PER_CHANGE_PERIOD TICK_TIMER_FREQ_HZ /* Tick signals per update */ /**************************** Type Definitions *******************************/ typedef struct { u32 OutputHz; /* Output frequency */ XInterval Interval; /* Interval value */ u8 Prescaler; /* NO USED */ u16 Options; /* Option settings */ } TmrCntrSetup; /***************** Macros (Inline Functions) Definitions *********************/ /************************** Function Prototypes ******************************/ static int TmrRtcInterruptExample(void); /* Main test */ /* Set up routines for timer counters */ static int SetupTicker(void); static int SetupTimer(int DeviceID); /* Interleaved interrupt test for both timer counters */ static int WaitForDutyCycleFull(void); static int SetupInterruptSystem(u16 IntcDeviceID, XScuGic *IntcInstancePtr); static void TickHandler(void *CallBackRef); /************************** Variable Definitions *****************************/ static XTtcPs TtcPsInst; /* Timer counter instance */ static TmrCntrSetup SettingsTable= {TICK_TIMER_FREQ_HZ, 0, 0, 0}; /* Ticker timer counter initial setup, only output freq */ XScuGic InterruptController; /* Interrupt controller instance */ static u8 ErrorCount; /* Errors seen at interrupt time */ static volatile u8 UpdateFlag; /* Flag to update the seconds counter */ static u32 TickCount; /* Ticker interrupts between seconds change */ /*****************************************************************************/ /** * * This is the main function that calls the TTC RTC interrupt example. * * @param None * * @return * - XST_SUCCESS to indicate Success * - XST_FAILURE to indicate a Failure. * * @note None. * *****************************************************************************/ int main(void) { int Status; xil_printf("Starting Timer RTC Example"); Status = TmrRtcInterruptExample(); if (Status != XST_SUCCESS) { xil_printf("ttcps rtc Example Failed\r\n"); return XST_FAILURE; } xil_printf("Successfully ran ttcps rtc Example\r\n"); return XST_SUCCESS; } /*****************************************************************************/ /** * * This is the main function of the interrupt example. * * * @param None. * * @return XST_SUCCESS to indicate success, else XST_FAILURE to indicate * a Failure. * ****************************************************************************/ static int TmrRtcInterruptExample(void) { int Status; /* * Make sure the interrupts are disabled, in case this is being run * again after a failure. */ /* * Connect the Intc to the interrupt subsystem such that interrupts can * occur. This function is application specific. */ Status = SetupInterruptSystem(INTC_DEVICE_ID, &InterruptController); if (Status != XST_SUCCESS) { return XST_FAILURE; } /* * Set up the Ticker timer */ Status = SetupTicker(); if (Status != XST_SUCCESS) { return Status; } Status = WaitForDutyCycleFull(); if (Status != XST_SUCCESS) { return Status; } /* * Stop the counters */ XTtcPs_Stop(&TtcPsInst); return XST_SUCCESS; } /****************************************************************************/ /** * * This function sets up the Ticker timer. * * @param None * * @return XST_SUCCESS if everything sets up well, XST_FAILURE otherwise. * *****************************************************************************/ int SetupTicker(void) { int Status; TmrCntrSetup *TimerSetup; XTtcPs *TtcPsTick; TimerSetup = &SettingsTable; /* * Set up appropriate options for Ticker: interval mode without * waveform output. */ TimerSetup->Options |= (XTTCPS_OPTION_INTERVAL_MODE); /* * Calling the timer setup routine * . initialize device * . set options */ Status = SetupTimer(TTC_TICK_DEVICE_ID); if(Status != XST_SUCCESS) { return Status; } TtcPsTick = &TtcPsInst; /* * Connect to the interrupt controller */ Status = XScuGic_Connect(&InterruptController, TTC_TICK_INTR_ID, (Xil_InterruptHandler)TickHandler, (void *)TtcPsTick); if (Status != XST_SUCCESS) { return XST_FAILURE; } /* * Enable the interrupt for the Timer counter */ XScuGic_Enable(&InterruptController, TTC_TICK_INTR_ID); /* * Enable the interrupts for the tick timer/counter * We only care about the interval timeout. */ XTtcPs_EnableInterrupts(TtcPsTick, XTTCPS_IXR_INT_ENABLE); /* * Start the tick timer/counter */ XTtcPs_Start(TtcPsTick); return Status; } /****************************************************************************/ /** * * This function uses the interrupt inter-locking between the ticker timer * counter and the waveform output timer counter. When certain amount of * interrupts have happened to the ticker timer counter, a flag, UpdateFlag, * is set to true. * * * @param None * * @return XST_SUCCESS if duty cycle successfully reaches beyond 100, * otherwise XST_FAILURE. * *****************************************************************************/ int WaitForDutyCycleFull(void) { u32 seconds; /* * Initialize some variables used by the interrupts and in loops. */ ErrorCount = 0; seconds = 0; /* * Loop until two minutes passes. */ while (seconds <= 121) { /* * If error occurs, disable interrupts, and exit. */ if (0 != ErrorCount) { return XST_FAILURE; } /* * The Ticker interrupt sets a flag for update. */ if (UpdateFlag) { /* * Calculate the time setting here, not at the time * critical interrupt level. */ seconds++; UpdateFlag = FALSE; xil_printf("Time: %d\n\r", seconds); } } return XST_SUCCESS; } /****************************************************************************/ /** * * This function sets up a timer counter device, using the information in its * setup structure. * . initialize device * . set options * . set interval and prescaler value for given output frequency. * * @param DeviceID is the unique ID for the device. * * @return XST_SUCCESS if successful, otherwise XST_FAILURE. * *****************************************************************************/ int SetupTimer(int DeviceID) { int Status; XTtcPs_Config *Config; XTtcPs *Timer; TmrCntrSetup *TimerSetup; TimerSetup = &SettingsTable; Timer = &TtcPsInst; /* * Look up the configuration based on the device identifier */ Config = XTtcPs_LookupConfig(DeviceID); if (NULL == Config) { return XST_FAILURE; } /* * Initialize the device */ Status = XTtcPs_CfgInitialize(Timer, Config, Config->BaseAddress); if (Status != XST_SUCCESS) { return XST_FAILURE; } /* * Set the options */ XTtcPs_SetOptions(Timer, TimerSetup->Options); /* * Timer frequency is preset in the TimerSetup structure, * however, the value is not reflected in its other fields, such as * IntervalValue and PrescalerValue. The following call will map the * frequency to the interval and prescaler values. */ XTtcPs_CalcIntervalFromFreq(Timer, TimerSetup->OutputHz, &(TimerSetup->Interval), &(TimerSetup->Prescaler)); /* * Set the interval and prescale */ XTtcPs_SetInterval(Timer, TimerSetup->Interval); return XST_SUCCESS; } /****************************************************************************/ /** * * This function setups the interrupt system such that interrupts can occur. * This function is application specific since the actual system may or may not * have an interrupt controller. The TTC could be directly connected to a * processor without an interrupt controller. The user should modify this * function to fit the application. * * @param IntcDeviceID is the unique ID of the interrupt controller * @param IntcInstacePtr is a pointer to the interrupt controller * instance. * * @return XST_SUCCESS if successful, otherwise XST_FAILURE. * *****************************************************************************/ static int SetupInterruptSystem(u16 IntcDeviceID, XScuGic *IntcInstancePtr) { int Status; XScuGic_Config *IntcConfig; /* The configuration parameters of the interrupt controller */ /* * Initialize the interrupt controller driver */ IntcConfig = XScuGic_LookupConfig(IntcDeviceID); if (NULL == IntcConfig) { return XST_FAILURE; } Status = XScuGic_CfgInitialize(IntcInstancePtr, IntcConfig, IntcConfig->CpuBaseAddress); if (Status != XST_SUCCESS) { return XST_FAILURE; } /* * Connect the interrupt controller interrupt handler to the hardware * interrupt handling logic in the ARM processor. */ Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_IRQ_INT, (Xil_ExceptionHandler) XScuGic_InterruptHandler, IntcInstancePtr); /* * Enable interrupts in the ARM */ Xil_ExceptionEnable(); return XST_SUCCESS; } /***************************************************************************/ /** * * This function is the handler which handles the periodic tick interrupt. * It updates its count, and set a flag to signal PWM timer counter to * update its duty cycle. * * This handler provides an example of how to handle data for the TTC and * is application specific. * * @param CallBackRef contains a callback reference from the driver, in * this case it is the instance pointer for the TTC driver. * * @return None. * *****************************************************************************/ static void TickHandler(void *CallBackRef) { u32 StatusEvent; /* * Read the interrupt status, then write it back to clear the interrupt. */ StatusEvent = XTtcPs_GetInterruptStatus((XTtcPs *)CallBackRef); XTtcPs_ClearInterruptStatus((XTtcPs *)CallBackRef, StatusEvent); if (0 != (XTTCPS_IXR_INT_ENABLE & StatusEvent)) { TickCount++; if (TICKS_PER_CHANGE_PERIOD == TickCount) { TickCount = 0; UpdateFlag = TRUE; } } else { /* * The Interval event should be the only one enabled. If it is * not it is an error */ ErrorCount++; } } 请详细分析一下以上的代码,并给出详细的解释
05-20
### 关于Xilinx TTCPS RTC中断示例代码的功能与结构 #### 功能概述 该代码片段定义了一组宏用于配置定时器设备及其频率参数,主要用于初始化和操作基于Xilinx Zynq SoC平台上的TTC(Triple Timer Counter Peripheral Subsystem)模块。通过这些宏定义,可以指定使用的硬件资源以及相关的中断ID[^1]。 #### 结构解析 以下是代码的关键部分及其实现细节: 1. **设备标识符** 宏`TIMER_DEVICE_ID`被设置为`FPAR_TTCPS_0_DEVICE_ID`,这表明程序将使用Zynq片上系统中的第一个TTC外设实例作为计时源。此常量通常由Xilinx工具链自动生成,并映射到具体硬件地址空间内的特定寄存器集合[^1]。 2. **工作频率设定** `TIMER_FREQ`变量提供了两个可能的工作频率选项——一个是大约55 MHz (`0x34FB5E3`) ,另一个接近333 MHz(`0x13DE4355`) 。实际应用中应依据设计需求选取合适的数值来满足精度与时序约束条件[^1]。 3. **中断向量表入口** 使用了名为`TIMER_IRPT_INTR_ID` 的宏表示当触发定时事件时所关联的CPU异常处理机制编号即中断号。它指向预定义好的中断服务子程序位置以便响应来自选定定时单元的通知信号[^1]。 4. **内存区域分配说明 (附加信息)** 另一段独立但有关联性的描述涉及到了嵌入式系统的存储布局规划方面。其中指定了RAM区间的起始结束边界分别为`0x4000000` 和 `0x4FFFFFF`, 这对于加载执行应用程序至关重要因为它们限定了可用物理地址范围从而影响数据放置策略[^2]. 5. **开发环境搭建指南(补充材料)** 提供了一个简短流程介绍如何利用 Xilinx SDK 创建针对目标板卡定制化的软件项目框架, 包含导出HDF文件步骤以及启动调试环节等内容[^3]. 6. **网络层协议简介(扩展阅读)** 同样也提及了一些基础计算机通讯概念比如TCP/IP模型里的传输控制协议(TCP),虽然这部分内容看似偏离主题较远但它可以帮助理解整个计算生态系统是如何协同工作的[^4]. 综上所述,上述代码主要服务于实时操作系统或者专用固件构建过程中涉及到的时间管理组件初始化阶段;同时配合恰当的链接脚本完成全局资源配置过程。 ```c #define TIMER_DEVICE_ID XPAR_TTCPS_0_DEVICE_ID // 设定要使用的定时器外围设备 ID [^1] #define TIMER_FREQ 0x34FB5E3 // 设置默认运行频率约为 55Mhz [^1] // 中断控制器相关配置项 #define TIMER_IRPT_INTR_ID XPAR_INTC_0_TTCPS_0_INTERRUPT_INTR /* Example of Memory Map Definition */ define symbol __ICFEDIT_region_RAM_start__ = 0x4000000; define symbol __ICFEDIT_region_RAM_end__ = 0x4FFFFFF; [^2] /* Steps to Setup Development Environment with Xilinx Tools*/ /* Export HDF File -> Launch SDK Toolchain -> Create Bare Metal Project */ [^3] /* Basic Knowledge About Communication Protocols Like TCP */ /* Reliable Connection-Oriented Protocol Suitable For Data Transfer Applications Such As Web Browsing And Email Services. */ [^4] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值