169 lines
4.0 KiB
C
169 lines
4.0 KiB
C
/*
|
||
*************************************************************************
|
||
* 包含的头文件
|
||
*************************************************************************
|
||
*/
|
||
/* STM32 固件库头文件 */
|
||
#include "stm32f10x.h"
|
||
|
||
/* 开发板硬件bsp头文件 */
|
||
#include "board.h"
|
||
#include "bsp_ili9341_lcd.h"
|
||
#include "bsp_adc.h"
|
||
#include "delay.h"
|
||
#include "bsp_led.h"
|
||
#include "bsp_usart.h"
|
||
#include "bsp_key_exti.h"
|
||
#include "bsp_PS2.h"
|
||
#include "OSC.h"
|
||
|
||
/* RT-Thread相关头文件 */
|
||
#include <rthw.h>
|
||
#include <rtthread.h>
|
||
|
||
|
||
|
||
#if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP)
|
||
#define RT_HEAP_SIZE 1024
|
||
/* 从内部SRAM里面分配一部分静态内存来作为rtt的堆空间,这里配置为4KB */
|
||
static uint32_t rt_heap[RT_HEAP_SIZE];
|
||
RT_WEAK void *rt_heap_begin_get(void)
|
||
{
|
||
return rt_heap;
|
||
}
|
||
|
||
RT_WEAK void *rt_heap_end_get(void)
|
||
{
|
||
return rt_heap + RT_HEAP_SIZE;
|
||
}
|
||
#endif
|
||
|
||
/**
|
||
* @brief 开发板硬件初始化函数
|
||
* @param 无
|
||
* @retval 无
|
||
*
|
||
* @attention
|
||
* RTT把开发板相关的初始化函数统一放到board.c文件中实现,
|
||
* 当然,你想把这些函数统一放到main.c文件也是可以的。
|
||
*/
|
||
void rt_hw_board_init()
|
||
{
|
||
/* 初始化SysTick */
|
||
SysTick_Config( SystemCoreClock / RT_TICK_PER_SECOND );
|
||
|
||
/* 硬件BSP初始化统统放在这里,比如LED,串口,LCD等 */
|
||
|
||
ILI9341_Init ();//LCD 初始化
|
||
LED_GPIO_Config();
|
||
LED2_ON;
|
||
USART_Config();
|
||
ADCx_Init();
|
||
EXTI_Key_Config();
|
||
PS2_Key_Config();
|
||
|
||
//其中0、3、5、6 模式适合从左至右显示文字,
|
||
//不推荐使用其它模式显示文字 其它模式显示文字会有镜像效果
|
||
//其中 6 模式为大部分液晶例程的默认显示方向
|
||
ILI9341_GramScan ( 3 );
|
||
LCD_SetColors(WHITE, BLACK);
|
||
ILI9341_Clear(0,0,LCD_X_LENGTH,LCD_Y_LENGTH);
|
||
|
||
//绘制波形显示区域框和背景虚线
|
||
PlotBlackground();
|
||
|
||
char dispBuff[100];
|
||
uint8_t StartPos_X=10, StartPos_Y=7, Div=50;
|
||
ILI9341_Clear(0, 0, 320, 30);
|
||
|
||
sprintf(dispBuff,"%.1fkHz", CurWaveFrq);
|
||
ILI9341_DispString_EN(Div*0+StartPos_X, StartPos_Y, dispBuff);
|
||
/*使用c标准库把变量转化成字符串*/
|
||
sprintf(dispBuff,"%.1fV", CurTriggerValue);
|
||
ILI9341_DispString_EN(Div*1+StartPos_X+20, StartPos_Y, dispBuff);
|
||
ILI9341_DispString_EN(Div*2+StartPos_X+15, StartPos_Y, CurTriggerMode);
|
||
ILI9341_DispString_EN(Div*3+StartPos_X, StartPos_Y, CurSamplingMode);
|
||
if(CurTimePerDiv < 1000)
|
||
{
|
||
sprintf(dispBuff,"%dus", CurTimePerDiv);
|
||
}
|
||
else
|
||
{
|
||
sprintf(dispBuff,"%dms", CurTimePerDiv/1000);
|
||
}
|
||
ILI9341_DispString_EN(Div*4+StartPos_X, StartPos_Y, dispBuff);
|
||
ILI9341_DispString_EN(Div*5+StartPos_X, StartPos_Y, CurSamplStatus);
|
||
|
||
|
||
|
||
|
||
/* 调用组件初始化函数 (use INIT_BOARD_EXPORT()) */
|
||
#ifdef RT_USING_COMPONENTS_INIT
|
||
rt_components_board_init();
|
||
#endif
|
||
|
||
#if defined(RT_USING_CONSOLE) && defined(RT_USING_DEVICE)
|
||
rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
|
||
#endif
|
||
|
||
#if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP)
|
||
rt_system_heap_init(rt_heap_begin_get(), rt_heap_end_get());
|
||
#endif
|
||
}
|
||
|
||
/**
|
||
* @brief SysTick中断服务函数
|
||
* @param 无
|
||
* @retval 无
|
||
*
|
||
* @attention
|
||
* SysTick中断服务函数在固件库文件stm32f10x_it.c中也定义了,而现在
|
||
* 在board.c中又定义一次,那么编译的时候会出现重复定义的错误,解决
|
||
* 方法是可以把stm32f10x_it.c中的注释或者删除即可。
|
||
*/
|
||
void SysTick_Handler(void)
|
||
{
|
||
/* 进入中断 */
|
||
rt_interrupt_enter();
|
||
|
||
/* 更新时基 */
|
||
rt_tick_increase();
|
||
|
||
/* 离开中断 */
|
||
rt_interrupt_leave();
|
||
}
|
||
|
||
|
||
|
||
/**
|
||
* @brief 重映射串口DEBUG_USARTx到rt_kprintf()函数
|
||
* Note:DEBUG_USARTx是在bsp_usart.h中定义的宏,默认使用串口1
|
||
* @param str:要输出到串口的字符串
|
||
* @retval 无
|
||
*
|
||
* @attention
|
||
*
|
||
*/
|
||
void rt_hw_console_output(const char *str)
|
||
{
|
||
/* 进入临界段 */
|
||
rt_enter_critical();
|
||
|
||
/* 直到字符串结束 */
|
||
while (*str!='\0')
|
||
{
|
||
/* 换行 */
|
||
if (*str=='\n')
|
||
{
|
||
USART_SendData(DEBUG_USARTx, '\r');
|
||
while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET);
|
||
}
|
||
|
||
USART_SendData(DEBUG_USARTx, *str++);
|
||
while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET);
|
||
}
|
||
|
||
/* 退出临界段 */
|
||
rt_exit_critical();
|
||
}
|