上传已经完成的部分,led灯驱动基本实现,正在写systick的,目前想利用安富莱的软件定时器的方法,在app层实现指示灯的对外指示信息。

This commit is contained in:
xqq27 2025-04-30 16:55:04 +08:00
parent fa1da11607
commit 22d24cbe33
14 changed files with 1328 additions and 612 deletions

View File

@ -1,8 +1,11 @@
#ifndef __APP_LED_H__
#define __APP_LED_H__
void app_led_marquee(void);
void app_led_change_style_disable(void);
void app_led_init(void);
// void app_led_marquee(void);
// void app_led_change_style_disable(void);
#endif

View File

@ -12,24 +12,72 @@
*************************************************************************************/
#include "app_led.h"
#include "mw_led.h"
#include "mw_soft_timer.h"
#include "stdint.h"
#include "stdio.h"
#include "mw_soft_timer.h"
// #include "mw_soft_timer.h"
#include "bsp.h"
// #include "bsp.h"
#define LED_RUN_MODE_INDICATOR (LED1)
void app_led_marquee(void)
// #define LED_RUNMODE_IDLE_BLINK_PERIOD_MS (500u)
// #define LED_RUNMODE_RUNNING_BLINK_PERIOD_MS (500u)
/* led的灯状态 */
typedef enum
{
// static uint8_t tmp_state = 0;
// static uint32_t tmp_tick = 0;
led_mode_idle = 0,
led_mode_running,
led_mode_fault,
// if(get_systick_ms() - tmp_tick > 500)
// {
// tmp_tick = get_systick_ms();
bsp_LedToggle(LED1);
// }
led_mode_num
}app_led_mode_enum;
static app_led_mode_enum app_led_mode;
static mw_led_t led_runMode_indicator;
void app_led_indicator_idleMode(void)
{
}
void app_led1_blink_process(void)
{
// 通过闪烁的频率 对外表示当前的模式
switch(app_led_mode)
{
case led_mode_idle:
app_led_indicator_idleMode();
break;
}
}
// void app_led_marquee(void)
// {
// // static uint8_t tmp_state = 0;
// // static uint32_t tmp_tick = 0;
// // if(get_systick_ms() - tmp_tick > 500)
// // {
// // tmp_tick = get_systick_ms();
// bsp_LedToggle(LED1);
// // }
// }
void app_led_init(void)
{
// 注册LED工作状态指示器
led_runMode_indicator = mw_get_led_obj(LED_RUN_MODE_INDICATOR);
}

View File

@ -31,6 +31,7 @@
*************************************************************************************/
void bsp_init(void)
{
bsp_timer_init();
// bsp_InitTimer();
// bsp_usart_1_init(115200);
// bsp_Init();
@ -58,14 +59,18 @@ void middleware_init(void)
*************************************************************************************/
int main(void)
{
mw_led_t led1;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
// bsp_init();
bsp_init();
middleware_init();
led1 = mw_get_led_obj(LED1);
while (1)
{
bsp_DelayMS(500);
led1.on();
bsp_DelayMS(500);
led1.off();
// bsp_pwm_test_loop();
}
}

View File

@ -86,7 +86,7 @@ void bsp_RunPer1ms(void)
else
{
ubCounter = 0x00;
bsp_LedToggle(LED1);
// bsp_LedToggle(LED1);
}
}

View File

@ -14,12 +14,12 @@
#ifndef __BSP_TIMER_H
#define __BSP_TIMER_H
#include "stdint.h"
#include <stdint.h>
/*
__IO volatile访
*/
#define TMR_COUNT 1 /* 软件定时器的个数 定时器ID范围 0 - 3) */
#define TMR_COUNT 4 /* 软件定时器的个数 定时器ID范围 0 - 3) */
/* 定时器结构体,成员变量必须是 volatile, 否则C编译器优化时可能有问题 */
typedef enum
@ -38,7 +38,7 @@ typedef struct
}SOFT_TMR;
/* 提供给其他C文件调用的函数 */
void bsp_InitTimer(void);
// void bsp_InitTimer(void);
void bsp_DelayMS(uint32_t n);
void bsp_DelayUS(uint32_t n);
void bsp_StartTimer(uint8_t _id, uint32_t _period);
@ -47,7 +47,7 @@ void bsp_StopTimer(uint8_t _id);
uint8_t bsp_CheckTimer(uint8_t _id);
int32_t bsp_GetRunTime(void);
void bsp_InitHardTimer(void);
void bsp_timer_init(void);
void bsp_StartHardTimer(uint8_t _CC, uint32_t _uiTimeOut, void * _pCallBack);

161
Code/bsp/src/bsp_led.c Normal file
View File

@ -0,0 +1,161 @@
#include "bsp_led.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x.h"
#include "stdint.h"
#include "public_diy.h"
/* led define */
/*
STM32F103C8 LED口线分配
LED1 : PC13 ()
LED2 :
LED3 :
LED4 :
*/
/* 按键口对应的RCC时钟 */
// #define RCC_ALL_LED (RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOB)
#define RCC_GPIO_LED1 RCC_APB2Periph_GPIOC
#define GPIO_PORT_LED1 GPIOC
#define GPIO_PIN_LED1 GPIO_Pin_13
#define RCC_GPIO_LED2 RCC_APB2Periph_GPIOB
#define GPIO_PORT_LED2 GPIOB
#define GPIO_PIN_LED2 GPIO_Pin_9
/*************************************************************************************
* @brief led
* @param[in/out] led_no
*
* @warning ,
* @note
*************************************************************************************/
void bsp_led_on(uint8_t led_no)
{
if (led_no == (LED1))
{
// STM32F103C8T6开发板 1是亮0是灭
// GPIO_PORT_LED1->BRR = GPIO_PIN_LED1;
GPIO_PORT_LED1->BSRR |= GPIO_PIN_LED1;
}
if (led_no == (LED2))
{
// STM32F103C8T6开发板 1是亮0是灭
GPIO_PORT_LED2->BSRR |= GPIO_PIN_LED2;
}
}
/*************************************************************************************
* @brief Led
* @param[in/out] _no
*
* @warning ,
* @note
*************************************************************************************/
void bsp_led_off(uint8_t led_no)
{
if(led_no == LED1)
{
// STM32F103C8T6开发板 1是亮0是灭
GPIO_PORT_LED1->BRR = GPIO_PIN_LED1;
}
else if(led_no == LED2)
{
GPIO_PORT_LED2->BRR = GPIO_PIN_LED2;
}
else
{
;
}
}
/*************************************************************************************
* @brief led状态切换
* @param[in/out] led_no
*
* @warning ,
* @note
*************************************************************************************/
void bsp_led_toggle(uint8_t led_no)
{
if (led_no == LED1)
{
GPIO_PORT_LED1->ODR ^= GPIO_PIN_LED1;
}
else if (led_no == LED2)
{
GPIO_PORT_LED2->ODR ^= GPIO_PIN_LED2;
}
else
{
;
}
}
/*************************************************************************************
* @brief led当前的电平状态
* @return uint8_t
*
* @warning ,
* @note
*************************************************************************************/
uint8_t bsp_get_led_ttlState(led_type_enum led_no)
{
uint8_t retVal = 0;
if(led_no == (LED1))
{
// STM32F103C8T6开发板 1是亮0是灭
// GPIO_PORT_LED1->BRR = GPIO_PIN_LED1;
retVal = GPIO_PORT_LED1->ODR & GPIO_PIN_LED1;
}
else if(led_no == (LED2))
{
// STM32F103C8T6开发板 1是亮0是灭
retVal = GPIO_PORT_LED2->ODR & GPIO_PIN_LED2;
}
return retVal;
}
/*************************************************************************************
* @brief Led
*
* @warning ,
* @note
*************************************************************************************/
void bsp_led1_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* 打开GPIO时钟 */
RCC_APB2PeriphClockCmd(RCC_GPIO_LED1, ENABLE);
/*
LED指示灯GPIO为推挽输出模式
GPIO设置为输出时GPIO输出寄存器的值缺省是0LED点亮.
GPIO为输出前LED指示灯
*/
bsp_led_off(LED1);
/* LED 1*/
GPIO_InitStructure.GPIO_Pin = GPIO_PIN_LED1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /* 设为 输出推挽模式 */
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /* IO口最大速度 */
GPIO_Init(GPIO_PORT_LED1, &GPIO_InitStructure);
}
void bsp_led2_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* 打开GPIO时钟 */
RCC_APB2PeriphClockCmd(RCC_GPIO_LED2, ENABLE);
/*
LED指示灯GPIO为推挽输出模式
GPIO设置为输出时GPIO输出寄存器的值缺省是0LED点亮.
GPIO为输出前LED指示灯
*/
bsp_led_off(LED2);
/* LED 2*/
GPIO_InitStructure.GPIO_Pin = GPIO_PIN_LED2;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /* 设为 输出推挽模式 */
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /* IO口最大速度 */
GPIO_Init(GPIO_PORT_LED2, &GPIO_InitStructure);
}

View File

@ -1,59 +0,0 @@
#include "bsp_timer.h"
#include "stm32f10x_tim.h"
#include "stm32f10x_rcc.h"
#include "misc.h"
#include "stm32f10x.h"
#define BSP_TIMER_USER_SYSTICK_TYPE (TIM2)
#define BSP_TIMER_USER_SYSTICK_RCC (RCC_APB1Periph_TIM2)
#define BSP_TIMER_USER_SYSTICK_IRQN (TIM2_IRQn)
#define BSP_TINER_USER_SYSTICK_PRESCALER (72 - 1)
#define BSP_TINER_USER_SYSTICK_PERIOD (1000u)
/*************************************************************************************
* @brief
*
* @warning ,
* @note
*************************************************************************************/
static void bsp_timer_2_init(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
/* 1. 初始化时钟 */
RCC_APB1PeriphClockCmd(BSP_TIMER_USER_SYSTICK_RCC, ENABLE);
/* 2. 初始化定时器参数,设置自动重装值,分频系数,计数方式等 */
TIM_TimeBaseStructure.TIM_Period = BSP_TINER_USER_SYSTICK_PERIOD;
TIM_TimeBaseStructure.TIM_Prescaler =BSP_TINER_USER_SYSTICK_PRESCALER;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(BSP_TIMER_USER_SYSTICK_TYPE, &TIM_TimeBaseStructure);
/* 3. 设置 TIM3_DIER 允许更新中断 */
TIM_ITConfig(BSP_TIMER_USER_SYSTICK_TYPE, TIM_IT_Update, ENABLE);
/* 4. TIM3 中断优先级设置。 */
NVIC_InitStructure.NVIC_IRQChannel = BSP_TIMER_USER_SYSTICK_IRQN; //TIM3 中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占优先级 0 级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //从优先级 3 级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ 通道被使能
NVIC_Init(&NVIC_InitStructure); //初始化 NVIC 寄存器
/* 5. 使能定时器2 */
TIM_Cmd(BSP_TIMER_USER_SYSTICK_TYPE, ENABLE);
}
// /* 6. 编写中断服务函数 */
// void bsp_timer_user_systick_isr_process(void) //TIM3 中断
// {
// if (TIM_GetITStatus(BSP_TIMER_USER_SYSTICK_TYPE, TIM_IT_Update) != RESET)
// {
// // 硬件置了1需要软件来清0
// TIM_ClearITPendingBit(BSP_TIMER_USER_SYSTICK_TYPE, TIM_IT_Update);
// /* add your code here */
// }
// }
void bsp_timer_init(void)
{
bsp_timer_2_init();
}

View File

@ -77,9 +77,10 @@ static void (*s_TIM_CallBack4)(void);
*/
extern void bsp_RunPer1ms(void);
extern void bsp_RunPer10ms(void);
void SysTick_ISR(void)
{
static uint8_t s_count = 0;
// static uint8_t s_count = 0;
uint8_t i;
/* 每隔1ms进来1次 (仅用于 bsp_DelayMS */
@ -98,20 +99,20 @@ void SysTick_ISR(void)
}
/* 全局运行时间每1ms增1 */
g_iRunTime++;
if (g_iRunTime == 0x7FFFFFFF) /* 这个变量是 int32_t 类型,最大数为 0x7FFFFFFF */
{
g_iRunTime = 0;
}
// g_iRunTime++;
// if (g_iRunTime == 0x7FFFFFFF) /* 这个变量是 int32_t 类型,最大数为 0x7FFFFFFF */
// {
// g_iRunTime = 0;
// }
bsp_RunPer1ms(); /* 每隔1ms调用一次此函数此函数在 bsp.c */
// bsp_RunPer1ms(); /* 每隔1ms调用一次此函数此函数在 bsp.c */
if (++s_count >= 10)
{
s_count = 0;
// if (++s_count >= 10)
// {
// s_count = 0;
bsp_RunPer10ms(); /* 每隔10ms调用一次此函数此函数在 bsp.c */
}
// bsp_RunPer10ms(); /* 每隔10ms调用一次此函数此函数在 bsp.c */
// }
}
/*
@ -168,7 +169,7 @@ void bsp_DelayMS(uint32_t n)
while (1)
{
bsp_Idle(); /* CPU空闲执行的操作 见 bsp.c 和 bsp.h 文件 */
// bsp_Idle(); /* CPU空闲执行的操作 见 bsp.c 和 bsp.h 文件 */
/*
@ -360,18 +361,7 @@ int32_t bsp_GetRunTime(void)
return runtime;
}
/*
*********************************************************************************************************
* : SysTick_Handler
* :
* :
* :
*********************************************************************************************************
*/
void SysTick_Handler(void)
{
SysTick_ISR();
}
/*************************************************************************************
* @brief TIM2us级别硬件定时.
@ -652,7 +642,7 @@ void bsp_StartHardTimer(uint8_t _CC, uint32_t _uiTimeOut, void * _pCallBack)
* :
*********************************************************************************************************
*/
void bsp_InitTimer(void)
void bsp_timer_init(void)
{
uint8_t i;
@ -679,11 +669,11 @@ void bsp_InitTimer(void)
*/
SysTick_Config(SystemCoreClock / 1000);
/* 开启硬件定时中断 */
bsp_InitHardTimer();
/* 初始化外部输入定时器 */
bsp_InitExternInputTimer();
/* 初始化 pwm 输出比较 */
bsp_pwm_init();
// bsp_InitHardTimer();
// /* 初始化外部输入定时器 */
// bsp_InitExternInputTimer();
// /* 初始化 pwm 输出比较 */
// bsp_pwm_init();
}
/*************************************************************************************
@ -699,7 +689,7 @@ void TIM2_IRQHandler(void)
{
TIM_ClearITPendingBit(TIM_EXTERN_INPUT, TIM_IT_Update);
/* add your code here. */
bsp_LedToggle(LED1);
// bsp_LedToggle(LED1);
}
}
@ -716,7 +706,7 @@ void TIM3_IRQHandler(void)
{
TIM_ClearITPendingBit(TIM_HARD, TIM_IT_Update);
/* add your code here. */
bsp_LedToggle(LED2);
// bsp_LedToggle(LED2);
}
@ -757,5 +747,17 @@ void TIM3_IRQHandler(void)
}
}
/*
*********************************************************************************************************
* : SysTick_Handler
* :
* :
* :
*********************************************************************************************************
*/
void SysTick_Handler(void)
{
SysTick_ISR();
}
/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/

View File

@ -2,6 +2,7 @@
#define __MW_LED_H__
#include "bsp_led.h"
#include "bsp_timer.h"
typedef struct
{

View File

@ -3,8 +3,14 @@
#include "stdint.h"
uint32_t get_systick_ms(void);
// uint32_t get_systick_ms(void);
void mw_soft_timer_user_systick_update(void);
// void mw_soft_timer_user_systick_update(void);
void mw_softTimer_led_indicator_config(uint32_t period);
/**
* LED工作状态指示灯的软件定时器是否超时10
*
*/
uint8_t mw_softTimer_get_led_indicator_timeUp_flag(void);
#endif

View File

@ -1,7 +1,8 @@
#include "mw_soft_timer.h"
#include "bsp_timer.h"
// LED工作状态指示灯 使用的软件定时器编号
#define LED_INDICATOR_SOFTTIMER_NO (0u)
// 用户使用的systick时间
volatile static uint32_t systick_ms = 0;
@ -15,5 +16,20 @@ void mw_soft_timer_user_systick_update(void)
++systick_ms;
}
/**
* LED工作状态指示灯的软件定时器周期 ms
*
*/
void mw_softTimer_led_indicator_config(uint32_t period)
{
bsp_StartTimer(LED_INDICATOR_SOFTTIMER_NO, period);
}
/**
* LED工作状态指示灯的软件定时器是否超时10
*
*/
uint8_t mw_softTimer_get_led_indicator_timeUp_flag(void)
{
return bsp_CheckTimer(LED_INDICATOR_SOFTTIMER_NO);
}

View File

@ -1,117 +1,173 @@
:020000040800F2
:10000000880600206D0100087501000877010008CE
:10001000790100087B0100087D0100080000000054
:100020000000000000000000000000007F01000848
:10003000810100080000000083010008850100081C
:100040008701000887010008870100088701000870
:100050008701000887010008870100088701000860
:100060008701000887010008870100088701000850
:100070008701000887010008870100088701000840
:100080008701000887010008870100088701000830
:100090008701000887010008870100088701000820
:1000A0008701000887010008870100088701000810
:1000B0008701000887010008870100088701000800
:1000C00087010008870100088701000887010008F0
:1000D00087010008B90400088701000887010008AB
:1000E00087010008870100088701000800F002F876
:1000F00000F02CF80AA090E8000C82448344AAF196
:100100000107DA4501D100F021F8AFF2090EBAE893
:10000000C80600208901000891010008930100083A
:100010009501000897010008990100080000000000
:100020000000000000000000000000009B0100082C
:100030009D010008000000009F010008DD04000889
:10004000A3010008A3010008A3010008A301000800
:10005000A3010008A3010008A3010008A3010008F0
:10006000A3010008A3010008A3010008A3010008E0
:10007000A3010008A3010008A3010008A3010008D0
:10008000A3010008A3010008A3010008A3010008C0
:10009000A3010008A3010008A3010008A3010008B0
:1000A000A3010008A3010008A3010008A3010008A0
:1000B00089050008A1050008A3010008A3010008A4
:1000C000A3010008A3010008A3010008A301000880
:1000D000A301000891060008A3010008A30100087D
:1000E000A3010008A3010008A301000800F002F822
:1000F00000F03AF80AA090E8000C82448344AAF188
:100100000107DA4501D100F02FF8AFF2090EBAE885
:100110000F0013F0010F18BFFB1A43F0010318473B
:10012000F005000000060000002300240025002642
:10013000103A28BF78C1FBD8520728BF30C148BF4A
:100140000B6070471FB51FBD10B510BD00F031F832
:100150001146FFF7F7FF00F073FA00F04FF803B411
:10016000FFF7F2FF03BC00F057F800000948804792
:1001700009480047FEE7FEE7FEE7FEE7FEE7FEE789
:10018000FEE7FEE7FEE7FEE704480549054A064BA1
:100190007047000059040008ED00000888000020A6
:1001A00088060020880200208802002070477047DF
:1001B0007047754600F02CF8AE4605006946534678
:1001C00020F00700854618B020B5FFF7DDFFBDE839
:1001D00020404FF000064FF000074FF000084FF0AE
:1001E000000B21F00701AC46ACE8C009ACE8C0093F
:1001F000ACE8C009ACE8C0098D46704710B50446AC
:10020000AFF300802046BDE81040FFF7A8BF000014
:10021000004870472800002001491820ABBEFEE7C7
:100220002600020070472DE9F04102460025002615
:10023000002000230024002791F803C00CF00F05D4
:1002400091F803C00CF0100CBCF1000F03D091F832
:1002500002C04CEA050591F800C0BCF1000F31D096
:10026000146800202BE04FF0010C0CFA00F3B1F8F9
:1002700000C00CEA03069E4220D183004FF00F0C11
:100280000CFA03F7BC4305FA03FC4CEA040491F8AA
:1002900003C0BCF1280F06D14FF0010C0CFA00FC92
:1002A000C2F814C00AE091F803C0BCF1480F05D1B0
:1002B0004FF0010C0CFA00FCC2F810C0401C0828DA
:1002C000D1D31460B1F800C0BCF1FF0F34DD546825
:1002D00000202EE000F1080C4FF0010808FA0CF3A2
:1002E000B1F800C00CEA03069E4221D183004FF012
:1002F0000F0C0CFA03F7BC4305FA03FC4CEA0404A8
:1003000091F803C0BCF1280F05D100F1080C08FAE0
:100310000CF8C2F8148091F803C0BCF1480F07D163
:1003200000F1080C4FF0010808FA0CF8C2F8108030
:10033000401C0828CED35460BDE8F0810249014337
:10034000024A1160704700000000FA050CED00E061
:1003500029B1064A92690243044B9A6104E0034AB8
:1003600092698243014B9A6170470000001002407D
:1003700010B500F001F810BD0CB500200190009000
:100380003348006840F480303149086000BF30488D
:10039000006800F4003000900198401C0190009823
:1003A00018B90198B0F5A06FF1D12948006800F4A0
:1003B000003010B10120009001E000200090009872
:1003C000012843D12348006840F01000214908600B
:1003D0000846006820F0070008600846006840F002
:1003E000020008601A484068194948600846406899
:1003F00048600846406840F48060486008464068AD
:1004000020F47C1048600846406840F4E8104860DA
:100410000846006840F08070086000BF0C48006823
:1004200000F000700028F9D00948406820F003006F
:10043000074948600846406840F00200486000BF35
:100440000348406800F00C000828F9D10CBD0000FA
:10045000001002400020024010B51348006840F030
:1004600001001149086008464068104908400E49DB
:100470004860084600680E4908400B490860084675
:10048000006820F4802008600846406820F4FE00E0
:1004900048604FF41F008860FFF76AFF4FF000606C
:1004A0000449086010BD0000001002400000FFF881
:1004B000FFFFF6FE08ED00E010B540F226610C48A3
:1004C00000F027F820B140F22661094800F012F848
:1004D00040F22551064800F01CF840B140F2255189
:1004E000034800F007F8024800F03DF8C4B210BD20
:1004F0000038014010B50022002340F66A14A142E2
:1005000000D100BF0A1201249440A3B2DC4304804E
:1005100010BD70B50246002400230025002040F6DF
:100520006A16B14200D100BFC1F3421501F01F03AA
:10053000012606FA03F3012D02D19689334006E025
:10054000022D02D1168A334001E0968A33400C1204
:10055000012606FA04F41688344013B10CB10120C8
:1005600000E0002070BD01468888C0F30800704795
:100570000146002009B9044AD268012902D1034A80
:100580001268002070470000001001400C0C014070
:1005900008B501211020FFF7DBFE002000F02CF849
:1005A0004FF40050ADF8000010208DF80300032038
:1005B0008DF8020069460248FFF735FE08BD0000CD
:1005C0000010014008B501210820FFF7C1FE0120FD
:1005D00000F012F84FF40070ADF8000010208DF814
:1005E000030003208DF8020069460248FFF71BFE56
:1005F00008BD0000000C014020B94FF40051044A2E
:10060000516104E0012802D14102024A11607047A1
:1006100000100140140C014028B90749096941F450
:100620000051054A1161012805D10449096841F4C6
:100630000071024A1160704700100140100C014027
:100640004FF4A060FFF77AFE00F002F800BFFEE76B
:1006500010B500F025F810BD10B500240020FFF7FC
:1006600087FF0446204610BD10B500240120FFF787
:100670007FFF0446204610BD10B50020FFF7BCFFE9
:1006800010BD10B50020FFF7C7FF10BD10B5012049
:10069000FFF7B2FF10BD10B50120FFF7BDFF10BD81
:1006A00010B5002011490870114848601148886051
:1006B0001148C860114808610120087510490B48AD
:1006C00081611049C16110490162104941620024F1
:1006D00008E004EB8401054A02EB81014868804789
:1006E000601CC4B2022CF4DB10BD0000000000202E
:1006F00091050008830600087906000859060008DD
:10070000C5050008970600088D0600086906000860
:1007100020070008000000208806000028010008CB
:100120002809000048090000103A24BF78C878C1A7
:10013000FAD8520724BF30C830C144BF04680C60ED
:10014000704700000023002400250026103A28BF35
:1001500078C1FBD8520728BF30C148BF0B60704739
:100160001FB51FBD10B510BD00F063F81146FFF7B5
:10017000F7FF00F0D5FB00F081F803B4FFF7F2FFC2
:1001800003BC00F08BF8000009488047094800478D
:10019000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE737
:1001A000FEE7FEE704480549054A064B7047000094
:1001B00029050008ED000008C8000020C80600203E
:1001C000C8020020C802002010B5203AC0F00B8001
:1001D000B1E81850203AA0E81850B1E81850A0E84B
:1001E0001850BFF4F5AF5FEA027C24BFB1E81850A5
:1001F000A0E8185044BF18C918C0BDE810405FEA15
:10020000827C24BF51F8043B40F8043B08BF704790
:10021000D20728BF31F8023B48BF11F8012B28BF95
:1002200020F8023B48BF00F8012B70477047704729
:100230007047754600F02CF8AE46050069465346F7
:1002400020F00700854618B020B5FFF7ABFFBDE8EA
:1002500020404FF000064FF000074FF000084FF02D
:10026000000B21F00701AC46ACE8C009ACE8C009BE
:10027000ACE8C009ACE8C0098D46704710B504462B
:10028000AFF300802046BDE81040FFF776BF0000C6
:1002900000487047640000207047000001491820A2
:1002A000ABBEFEE7260002002DE9F0410246002524
:1002B0000026002000230024002791F803C00CF042
:1002C0000F0591F803C00CF0100CBCF1000F03D027
:1002D00091F802C04CEA050591F800C0BCF1000F8E
:1002E00031D0146800202BE04FF0010C0CFA00F321
:1002F000B1F800C00CEA03069E4220D183004FF003
:100300000F0C0CFA03F7BC4305FA03FC4CEA040497
:1003100091F803C0BCF1280F06D14FF0010C0CFA84
:1003200000FCC2F814C00AE091F803C0BCF1480F09
:1003300005D14FF0010C0CFA00FCC2F810C0401CB3
:100340000828D1D31460B1F800C0BCF1FF0F34DD30
:10035000546800202EE000F1080C4FF0010808FA64
:100360000CF3B1F800C00CEA03069E4221D18300D1
:100370004FF00F0C0CFA03F7BC4305FA03FC4CEAF0
:10038000040491F803C0BCF1280F05D100F1080C5A
:1003900008FA0CF8C2F8148091F803C0BCF1480FB9
:1003A00007D100F1080C4FF0010808FA0CF8C2F868
:1003B0001080401C0828CED35460BDE8F0810000B6
:1003C00002490143024A1160704700000000FA052B
:1003D0000CED00E029B1064A92690243044B9A6190
:1003E00004E0034A92698243014B9A61704700001E
:1003F0000010024010B500F001F810BD0CB500204F
:10040000019000903348006840F480303149086022
:1004100000BF3048006800F4003000900198401C94
:100420000190009818B90198B0F5A06FF1D1294852
:10043000006800F4003010B10120009001E00020BD
:1004400000900098012843D12348006840F0100034
:10045000214908600846006820F007000860084647
:10046000006840F0020008601A4840681949486076
:100470000846406848600846406840F4806048602C
:100480000846406820F47C1048600846406840F404
:10049000E81048600846006840F08070086000BFBF
:1004A0000C48006800F000700028F9D00948406846
:1004B00020F00300074948600846406840F0020009
:1004C000486000BF0348406800F00C000828F9D1DC
:1004D0000CBD0000001002400020024010B500F0EA
:1004E00001F810BD10B50D48006840B10B48006818
:1004F000401E0A49086010B901200949087000240B
:1005000008E004EB4401074A02EB810000F040F9E7
:10051000601CC4B2012CF4DB10BD00000000002000
:10052000040000205800002010B51348006840F077
:1005300001001149086008464068104908400E490A
:100540004860084600680E4908400B4908600846A4
:10055000006820F4802008600846406820F4FE000F
:1005600048604FF41F008860FFF744FF4FF00060C1
:100570000449086010BD0000001002400000FFF8B0
:10058000FFFFF6FE08ED00E010B50121880700F03E
:1005900064F818B10121880700F05CF810BD000074
:1005A00010B50121264800F058F818B1012124485F
:1005B00000F050F80221224800F04FF858B1022113
:1005C0001F4800F047F8002202211D4800F056F8AD
:1005D0001C48006880470421194800F03EF858B1D3
:1005E0000421174800F036F800220421144800F0D6
:1005F00045F81548006880470821114800F02DF89B
:1006000058B108210E4800F025F8002208210C48B6
:1006100000F034F80D48006880471021084800F0C9
:100620001CF858B11021064800F014F800221021DF
:10063000034800F023F806480068804710BD00001A
:10064000000400400C0000201000002014000020D6
:1006500018000020CA430282704730B502460020CD
:1006600000230024158A05EA0103958905EA01049F
:1006700013B10CB1012000E0002030BD1AB1838914
:100680000B43838102E083898B43838170470000A1
:1006900010B540F226610C4800F027F820B140F276
:1006A0002661094800F012F840F22551064800F092
:1006B0001CF840B140F22551034800F007F8024809
:1006C00000F03DF8C4B210BD0038014010B5002262
:1006D000002340F66A14A14200D100BF0A1201248F
:1006E0009440A3B2DC43048010BD70B502460024E0
:1006F00000230025002040F66A16B14200D100BF59
:10070000C1F3421501F01F03012606FA03F3012D80
:1007100002D19689334006E0022D02D1168A334079
:1007200001E0968A33400C12012606FA04F416887A
:10073000344013B10CB1012000E0002070BD01462F
:100740008888C0F30800704780F310887047000065
:1007500010B5044604B910BD012C00D102240120BB
:10076000FFF7F2FF08480460002008490870FFF70F
:10077000EBFF04E005480078012800D100E0F9E72C
:1007800000BF00BFE7E700000000002004000020D9
:10079000416851B14168491E416031B90121417040
:1007A0000178012901D1816841607047014600202C
:1007B00011B9044AD26804E0012902D1024A126840
:1007C00000207047001001400C0C014010B500F0F3
:1007D00059F810BD08B501211020FFF7FBFD0020DE
:1007E00000F02CF84FF40050ADF8000010208DF808
:1007F000030003208DF8020069460248FFF754FD0C
:1008000008BD00000010014008B501210820FFF7D5
:10081000E1FD012000F012F84FF40070ADF8000087
:1008200010208DF8030003208DF80200694602486D
:10083000FFF73AFD08BD0000000C014020B94FF45D
:100840000051044A516104E0012802D14102024AE8
:100850001160704700100140140C014028B907498D
:10086000096941F40051054A1161012805D1044983
:10087000096841F40071024A11607047001001409C
:10088000100C014070B5002016E0002100EB400282
:100890001F4B03EB8202516000EB400203EB82022C
:1008A000916000EB400203EB8202517000EB4002CA
:1008B00003F82210411CC8B20128E6DB154909687B
:1008C0004FF47A73B1FBF3F2B2F1807F00D31DE0F5
:1008D00022F07F41491E4FF0E023596159170F2341
:1008E000002907DA1C07260E0B4C01F00F052D1FFF
:1008F000665503E01C07250E084C655400BF002117
:100900004FF0E02399610721196100BF70BD00001D
:10091000580000201C00002018ED00E000E400E07A
:100920008AB04FF4A060FFF74BFDFFF74FFF00F0D8
:1009300017F80021684600F027F81422694605A838
:10094000FFF742FC0BE04FF4FA70FFF701FF079846
:1009500080474FF4FA70FFF7FBFE08988047F2E7F4
:1009600010B500F039F810BD10B500240020FFF7D5
:100970001DFF0446204610BD10B500240120FFF7DE
:1009800015FF0446204610BD70B505460C46022CE6
:1009900001DB00BFFEE704EB8400044A02EB8001A8
:1009A00014222846FFF710FC70BD00003000002024
:1009B00010B50020FFF742FF10BD10B50020FFF773
:1009C0004DFF10BD10B50120FFF738FF10BD10B569
:1009D0000120FFF743FF10BD10B50020114908703A
:1009E00011484860114888601148C8601148086182
:1009F0000120087510490B4881611049C1611049F7
:100A0000016210494162002408E004EB8401054AB8
:100A100002EB810148688047601CC4B2022CF4DB01
:100A200010BD000030000020D5070008BB090008F9
:100A3000B10900086909000809080008CF09000881
:100A4000C509000879090008680A000800000020AC
:100A50003000000028010008980A0008300000203B
:100A6000980600004401000800000000000000009B
:100A70000000000000000000000000000000000076
:100A80000000000000A24A04000000000000000076
:080A9000010203040607080936
:04000005080000ED02
:00000001FF

File diff suppressed because it is too large Load Diff

View File

@ -409,6 +409,11 @@
<FileType>1</FileType>
<FilePath>..\Code\bsp\src\bsp_led.c</FilePath>
</File>
<File>
<FileName>bsp_timer.c</FileName>
<FileType>1</FileType>
<FilePath>..\Code\bsp\src\bsp_timer.c</FilePath>
</File>
</Files>
</Group>
<Group>