oscilloscope/User/board.c

161 lines
3.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
*************************************************************************
* 包含的头文件
*************************************************************************
*/
/* STM32 固件库头文件 */
#include "stm32f10x.h"
/* 开发板硬件bsp头文件 */
#include "board.h"
#include "bsp_ili9341_lcd.h"
#include "bsp_adc.h"
#include "bsp_TiMbase.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();
USART_Config();
ADCx_Init();
EXTI_Key_Config();
PS2_Key_Config();
BASIC_TIM_Init();
//其中0、3、5、6 模式适合从左至右显示文字,
//不推荐使用其它模式显示文字 其它模式显示文字会有镜像效果
//其中 6 模式为大部分液晶例程的默认显示方向
ILI9341_GramScan ( 3 );
LCD_SetColors(WHITE, BLACK);
ILI9341_Clear(0,0,LCD_X_LENGTH,LCD_Y_LENGTH);
//绘制波形显示区域框和背景虚线
PlotBlackground();
ILI9341_DispString_EN(240, (((sFONT *)LCD_GetFont())->Height)*0, "->");
char dispBuff[100];
/*使用c标准库把变量转化成字符串*/
sprintf(dispBuff,"TV: %d", CurTriggerValue);
ILI9341_DispString_EN(260, (((sFONT *)LCD_GetFont())->Height)*0, dispBuff);
ILI9341_DispString_EN(260, (((sFONT *)LCD_GetFont())->Height)*1, CurRangeMode);
ILI9341_DispString_EN(260, (((sFONT *)LCD_GetFont())->Height)*2, CurTriggerMode);
ILI9341_DispString_EN(260, (((sFONT *)LCD_GetFont())->Height)*3, CurTriggerMode);
sprintf(dispBuff,"TPD: %d", CurTimePerDiv);
ILI9341_DispString_EN(260, (((sFONT *)LCD_GetFont())->Height)*4, dispBuff);
/* 调用组件初始化函数 (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()函数
* NoteDEBUG_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();
}