有的坛友就好看不下去了,为什么要改写闪灯程序?
其实我也不想改,但我从STM32一路杀关斩将过来地,现工作中也是用STM32的标准库。
为了不影响我的程序思路,也让评测进行下去,所以我改写闪灯程序。有的看官会说是不是闲得发贱!恰恰相反本人忙得很,也是为了省写代码的时间。
费话不多说了,上程序:
#include "main.h"
#include "Board.h"
static __IO u32 TimingDelay;
/** @addtogroup Examples
@{
*/
/** @addtogroup GPIO_Toggle
@{
*/
/** @defgroup GPIO_Toggle_Functions Functions
@{
*/
/* Delay */
void Delay(uint32_t count);
void SysTick_Init(void);
void SysTick_Delay_ms(__IO u32 nTime);
void TimingDelay_Decrement(void);
/*!
* [url=home.php?mod=space&uid=159083]@brief[/url] Main program
*
* @param None
*
* @retval None
*/
int main(void)
{
// APM_MINI_LEDInit(LED2);
// APM_MINI_LEDInit(LED3);
GPIO_Config_T configStruct;
RCM_EnableAHB1PeriphClock(RCM_AHB1_PERIPH_GPIOE );
/** Configure the GPIO_LED pin */
GPIO_ConfigStructInit(&configStruct);
configStruct.pin = GPIO_PIN_5|GPIO_PIN_6;
configStruct.mode = GPIO_MODE_OUT;
configStruct.speed = GPIO_SPEED_50MHz;
GPIO_Config(GPIOE, &configStruct);
while (1)
{
SysTick_Delay_ms(1000);
GPIO_ToggleBit(GPIOE,GPIO_PIN_5);
GPIO_ToggleBit(GPIOE,GPIO_PIN_6);
}
}
/*!
* @brief Delay
*
* @param count: delay count
*
* @retval None
*/
void Delay(uint32_t count)
{
volatile uint32_t delay = count;
while(delay--);
}
void SysTick_Init(void)
{
/** SystemFrequency / 1000 = 1ms */
if (SysTick_Config(SystemCoreClock / 1000))
{
/** Capture error */
while (1);
}
}
/*!
* @brief Precise Delay
*
* @param nTime in milliseconds
*
* @retval None
*/
void SysTick_Delay_ms(__IO u32 nTime)
{
TimingDelay = nTime;
while(TimingDelay != 0);
}
/*!
* @brief Decrements the TimingDelay
*
* @param None
*
* @retval None
*/
void TimingDelay_Decrement(void)
{
if(TimingDelay != 0)
{
TimingDelay--;
}
}
这样就变成了近似天STM32标准库了。
以下是编译截图:
程序运行后,同板载闪灯有点不一样,好像闪的快了。
|