- #include "stm32f4xx.h"
- #include <stdio.h>
- #include "stm324xg_lcd.h"
- #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
- #define PRINT_ON_LCD
- #define ADC1_DR_ADDRESS ((uint32_t)0x4001204C) //ADC1 DR寄存器基地址
- ADC_InitTypeDef ADC_InitStructure; //ADC初始化结构体声明
- DMA_InitTypeDef DMA_InitStructure; //DMA初始化结构体声明
- __IO uint16_t ADCConvertedValue; // ADC为12位模数转换器,只有ADCConvertedValue的低12位有效
- __IO uint16_t ADC1ConvertedValue = 0;
- __IO uint32_t ADC1ConvertedVoltage = 0;
- void ADC_GPIO_Configuration(void);
- void ADC1_CH13_DMA_Config(void);
- void Display(void);
- void Display_Init(void);
- static void Delay_ARMJISHU(__IO uint32_t nCount)
- {
- for (; nCount != 0; nCount--)
- {
- }
- }
- void STM32_Shenzhou_COMInit(USART_InitTypeDef* USART_InitStruct)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); /* Enable GPIO clock */
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); /* Enable UART clock */
- GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1); /* Connect PXx to USARTx_Tx*/
- /* Connect PXx to USARTx_Rx*/
- GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1);
- /* Configure USART Tx as alternate function */
- GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
- /* Configure USART Rx as alternate function */
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
- USART_Init(USART1, USART_InitStruct); /* USART configuration */
- USART_Cmd(USART1, ENABLE); /* Enable USART */
- }
- void Printf_Init(void)
- {
- USART_InitTypeDef USART_InitStructure;
- USART_InitStructure.USART_BaudRate = 115200;
- USART_InitStructure.USART_WordLength = USART_WordLength_8b;
- USART_InitStructure.USART_StopBits = USART_StopBits_1;
- USART_InitStructure.USART_Parity = USART_Parity_No;
- USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
- USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
- STM32_Shenzhou_COMInit(&USART_InitStructure);
- }
- int main(void)
- {
- u16 ADCConvertedValueLocalTemp, ADCConvertedValueLocal, Precent = 0, Voltage = 0;
-
- /* 详见左侧工程窗口的STM32_EVAL中的Printf.c */
- Printf_Init();
- printf("\n\r\n");
- printf("\n\r 论坛后续还会有更多精彩的示例,欢迎访问论坛交流与学习.");
- printf("\n\r 本示例为AD转换示例,串口输出转换结果,模拟信号来自板上的电位器! \n\r");
- printf("\n\r==============================================================================");
- printf("\n\r");
- /* ADC1 configuration *******************************************************/
- /* - Enable peripheral clocks */
- /* - DMA2_Stream0 channel2 configuration */
- /* - Configure ADC Channel7 pin as analog input */
- /* - Configure ADC1 Channel7 */
- ADC1_CH13_DMA_Config(); //ADC模数转化的初始化
-
- /* Start ADC1 Software Conversion */
- ADC_SoftwareStartConv(ADC1); //ADC模数转化的初始化
- printf("\r\n ARMJISHU.COM神舟王STM32F439IGT开发板 AD模数转换实验\n\n\r");
- #ifdef PRINT_ON_LCD
- /* Display ADC converted value on LCD */
- Display_Init();
- #endif
- while (1)
- {
- #ifdef PRINT_ON_LCD
- /* Display ADC converted value on LCD */
- Display();
- #endif
- // 取两次采样的平均值
- ADCConvertedValueLocalTemp = ADC1ConvertedValue;
- Delay_ARMJISHU(80000);
- ADCConvertedValueLocal = ADC1ConvertedValue;
- ADCConvertedValueLocal = (ADCConvertedValueLocalTemp + ADCConvertedValueLocal) >> 1;
-
- Precent = (ADCConvertedValueLocal*100/0x1000); //算出百分比
- Voltage = Precent*33; // 3.3V的电平,计算等效电平
- printf("\r 当前AD转换结果为:0x%X, 百分比为:%d%%,电压值:%d.%d%dV. \r",
- ADCConvertedValueLocal, Precent, Voltage/1000, (Voltage%1000)/100, (Voltage%100)/10);
- Delay_ARMJISHU(6000000);
- }
- }
- PUTCHAR_PROTOTYPE
- {
- /* Place your implementation of fputc here */
- /* e.g. write a character to the USART */
- USART_SendData(USART1, (uint8_t) ch);
- /* Loop until the end of transmission */
- while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
- {}
- return ch;
- }
- void ADC1_CH13_DMA_Config(void)
- {
- ADC_InitTypeDef ADC_InitStructure;
- ADC_CommonInitTypeDef ADC_CommonInitStructure;
- DMA_InitTypeDef DMA_InitStructure;
- GPIO_InitTypeDef GPIO_InitStructure;
- /* Enable ADC1, DMA2 and GPIO clocks ****************************************/
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2 | RCC_AHB1Periph_GPIOC, ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
- /* DMA2 Stream0 channel2 configuration **************************************/
- DMA_InitStructure.DMA_Channel = DMA_Channel_0;
- DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)ADC1_DR_ADDRESS;
- DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&ADC1ConvertedValue;
- DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
- DMA_InitStructure.DMA_BufferSize = 1;
- DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
- DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;
- DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
- DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
- DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
- DMA_InitStructure.DMA_Priority = DMA_Priority_High;
- DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;
- DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;
- DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
- DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
- DMA_Init(DMA2_Stream0, &DMA_InitStructure);
- DMA_Cmd(DMA2_Stream0, ENABLE);
- /* Configure PC.03 (ADC Channel13) as analog input -------------------------*/
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
- GPIO_Init(GPIOC, &GPIO_InitStructure);
- /* ADC Common Init **********************************************************/
- ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;
- ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2;
- ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;
- ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;
- ADC_CommonInit(&ADC_CommonInitStructure);
- /* ADC1 Init ****************************************************************/
- ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
- ADC_InitStructure.ADC_ScanConvMode = DISABLE;
- ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
- ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
- ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
- ADC_InitStructure.ADC_NbrOfConversion = 1; //顺序进行规则转换的ADC通道的数目,这个数目的取值范围为1-16//
- ADC_Init(ADC1, &ADC_InitStructure);
- /* ADC1 regular channel13 configuration *************************************/
- ADC_RegularChannelConfig(ADC1, ADC_Channel_13, 1, ADC_SampleTime_3Cycles);
- /* Enable DMA request after last transfer (Single-ADC mode) */
- ADC_DMARequestAfterLastTransferCmd(ADC1, ENABLE);
- /* Enable ADC1 DMA */
- ADC_DMACmd(ADC1, ENABLE);
- /* Enable ADC1 */
- ADC_Cmd(ADC1, ENABLE);
- }
- #ifdef PRINT_ON_LCD
- /**
- * [url=home.php?mod=space&uid=247401]@brief[/url] Display ADC converted value on LCD
- * @param None
- * @retval None
- */
- void Display(void)
- {
- uint32_t v=0,mv=0;
- uint8_t text[50];
- ADC1ConvertedVoltage = ADC1ConvertedValue *3300/0xFFF;
- v=(ADC1ConvertedVoltage)/1000;
- mv = (ADC1ConvertedVoltage%1000)/10;
- sprintf((char*)text," ADC = %d.%d V ",v,mv);
- LCD_DisplayStringLine(LINE(6),text);
- }
- void Display_Init(void)
- {
- /* Initialize the LCD */
- STM324xG_LCD_Init();
- /* Clear the LCD */
- LCD_Clear(White);
- LCD_DisplayWelcomeStr(LCD_LINE_8);
- /* Set the LCD Text size */
- LCD_SetFont(&Font8x12);
- /* Set the LCD Back Color and Text Color*/
- LCD_SetBackColor(Blue);
- LCD_SetTextColor(White);
- /* Display */
- LCD_DisplayStringLine(LINE(0x13), " ADC conversion w/ DMA transfer example ");
- /* Set the LCD Text size */
- LCD_SetFont(&Font16x24);
- /* Display */
- LCD_DisplayStringLine(LINE(0), "ADC Conversion @2Msps");
- /* Set the LCD Back Color and Text Color*/
- LCD_SetBackColor(White);
- LCD_SetTextColor(Blue);
- /* Display */
- LCD_DisplayStringLine(LINE(2)," Turn R118(PC.03) ");
- LCD_DisplayStringLine(LINE(4)," Potentiometer ");
- }
- #endif /* PRINT_ON_LCD */
- 移植后:
- #include "stm32f4xx.h"
- #include "ucos_ii.h"
- #include <stdio.h>
- #include "Gpio.h"
- #include "stm324xg_lcd.h"
- #include "fonts.h"
- //#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
- #define ADC1_DR_ADDRESS ((uint32_t)0x4001204C) //ADC1 DR寄存器基地址
- ADC_InitTypeDef ADC_InitStructure; //ADC初始化结构体声明
- DMA_InitTypeDef DMA_InitStructure; //DMA初始化结构体声明
- __IO uint16_t ADCConvertedValue; // ADC为12位模数转换器,只有ADCConvertedValue的低12位有效
- __IO uint16_t ADC1ConvertedValue = 0;
- __IO uint32_t ADC1ConvertedVoltage = 0;
- #define TASKSamp_PRIO 5
- #define TASKSamp_STK_SIZE 128
- #define TASKUsart_PRIO 6
- #define TASKUsart_STK_SIZE 128
- #define TASKDisp_PRIO 7
- #define TASKDisp_STK_SIZE 128
- int fputc(int ch, FILE *f)
- {
- /* Place your implementation of fputc here */
- /* e.g. write a character to the USART */
- USART_SendData(USART1, (uint8_t) ch);
- /* Loop until the end of transmission */
- while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
- {}
- return ch;
- }
- void STM32_Shenzhou_COMInit(USART_InitTypeDef* USART_InitStruct)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); /* Enable GPIO clock */
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); /* Enable UART clock */
- GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1); /* Connect PXx to USARTx_Tx*/
- /* Connect PXx to USARTx_Rx*/
- GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1);
- /* Configure USART Tx as alternate function */
- GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
- /* Configure USART Rx as alternate function */
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
- USART_Init(USART1, USART_InitStruct); /* USART configuration */
- USART_Cmd(USART1, ENABLE); /* Enable USART */
- }
- void Printf_Init(void)
- {
- USART_InitTypeDef USART_InitStructure;
- USART_InitStructure.USART_BaudRate = 115200;
- USART_InitStructure.USART_WordLength = USART_WordLength_8b;
- USART_InitStructure.USART_StopBits = USART_StopBits_1;
- USART_InitStructure.USART_Parity = USART_Parity_No;
- USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
- USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
- STM32_Shenzhou_COMInit(&USART_InitStructure);
- }
- void ADC1_CH13_DMA_Config(void)
- {
- ADC_InitTypeDef ADC_InitStructure;
- ADC_CommonInitTypeDef ADC_CommonInitStructure;
- DMA_InitTypeDef DMA_InitStructure;
- GPIO_InitTypeDef GPIO_InitStructure;
- /* Enable ADC1, DMA2 and GPIO clocks ****************************************/
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2 | RCC_AHB1Periph_GPIOC, ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
- /* DMA2 Stream0 channel2 configuration **************************************/
- DMA_InitStructure.DMA_Channel = DMA_Channel_0;
- DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)ADC1_DR_ADDRESS;
- DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&ADC1ConvertedValue;
- DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
- DMA_InitStructure.DMA_BufferSize = 1;
- DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
- DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;
- DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
- DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
- DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
- DMA_InitStructure.DMA_Priority = DMA_Priority_High;
- DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;
- DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;
- DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
- DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
- DMA_Init(DMA2_Stream0, &DMA_InitStructure);
- DMA_Cmd(DMA2_Stream0, ENABLE);
- /* Configure PC.03 (ADC Channel13) as analog input -------------------------*/
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
- GPIO_Init(GPIOC, &GPIO_InitStructure);
- /* ADC Common Init **********************************************************/
- ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;
- ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2;
- ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;
- ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;
- ADC_CommonInit(&ADC_CommonInitStructure);
- /* ADC1 Init ****************************************************************/
- ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
- ADC_InitStructure.ADC_ScanConvMode = DISABLE;
- ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
- ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
- ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
- ADC_InitStructure.ADC_NbrOfConversion = 1; //顺序进行规则转换的ADC通道的数目,这个数目的取值范围为1-16//
- ADC_Init(ADC1, &ADC_InitStructure);
- /* ADC1 regular channel13 configuration *************************************/
- ADC_RegularChannelConfig(ADC1, ADC_Channel_13, 1, ADC_SampleTime_3Cycles);
- /* Enable DMA request after last transfer (Single-ADC mode) */
- ADC_DMARequestAfterLastTransferCmd(ADC1, ENABLE);
- /* Enable ADC1 DMA */
- ADC_DMACmd(ADC1, ENABLE);
- /* Enable ADC1 */
- ADC_Cmd(ADC1, ENABLE);
- }
- /**
- * [url=home.php?mod=space&uid=247401]@brief[/url] Display ADC converted value on LCD
- * @param None
- * @retval None
- */
- void Display_Init(void)
- {
- /* Initialize the LCD */
- STM324xG_LCD_Init();
- /* Clear the LCD */
- LCD_Clear(White);
- LCD_DisplayWelcomeStr(LCD_LINE_8);
- /* Set the LCD Text size */
- LCD_SetFont(&Font8x12);
- /* Set the LCD Back Color and Text Color*/
- LCD_SetBackColor(Blue);
- LCD_SetTextColor(White);
- /* Display */
- LCD_DisplayStringLine(LINE(0x13), " ADC conversion w/ DMA transfer example ");
- /* Set the LCD Text size */
- LCD_SetFont(&Font16x24);
- /* Display */
- LCD_DisplayStringLine(LINE(0), "ADC Conversion @2Msps");
- /* Set the LCD Back Color and Text Color*/
- LCD_SetBackColor(White);
- LCD_SetTextColor(Blue);
- /* Display */
- LCD_DisplayStringLine(LINE(2)," Turn R118(PC.03) ");
- LCD_DisplayStringLine(LINE(4)," Potentiometer ");
- }
- void Display(void)
- {
- uint32_t v=0,mv=0;
- uint8_t text[50];
- ADC1ConvertedVoltage = ADC1ConvertedValue *3300/0xFFF;
- v=(ADC1ConvertedVoltage)/1000;
- mv = (ADC1ConvertedVoltage%1000)/10;
- sprintf((char*)text," ADC = %d.%d V ",v,mv);
- LCD_DisplayStringLine(LINE(6),text);
- }
- static void taskSamp(void *p_arg);
- static void taskUsart(void *p_arg);
- static void taskDisp(void *p_arg);
- static OS_STK taskSamp_stk[TASKSamp_STK_SIZE];
- static OS_STK taskUsart_stk[TASKUsart_STK_SIZE];
- static OS_STK taskDisp_stk[TASKDisp_STK_SIZE];
- static void systick_init(void)
- {
- RCC_ClocksTypeDef rcc_clocks;
- RCC_GetClocksFreq(&rcc_clocks);
- SysTick_Config(rcc_clocks.HCLK_Frequency/OS_TICKS_PER_SEC);
- }
- int main(void)
- {
-
- OSInit();
- printf("\n\r\n");
- printf("\n\r 论坛后续还会有更多精彩的示例,欢迎访问论坛交流与学习.");
- printf("\n\r 本示例为AD转换示例,串口输出转换结果,模拟信号来自板上的电位器! \n\r");
- printf("\n\r==============================================================================");
- printf("\n\r");
- OSTaskCreate(taskSamp,(void*)0,&taskSamp_stk[TASKSamp_STK_SIZE - 1],TASKSamp_PRIO);
- OSStart();
- return 0;
- }
- static void taskSamp(void *p_arg)
- {
- systick_init();
-
- OSTaskCreate(taskUsart,(void*)0,&taskUsart_stk[TASKUsart_STK_SIZE - 1],TASKUsart_PRIO);
- OSTaskCreate(taskDisp,(void*)0,&taskDisp_stk[TASKDisp_STK_SIZE - 1],TASKDisp_PRIO);
-
- while(1)
- {
- ADC1_CH13_DMA_Config(); //ADC模数转化的初始化
- /* Start ADC1 Software Conversion */
- ADC_SoftwareStartConv(ADC1); //ADC模数转化的软件启动
-
- OSTimeDly(8);
- }
-
-
- }
- static void taskUsart(void *p_arg)
- {
- u16 ADCConvertedValueLocalTemp, ADCConvertedValueLocal, Percent = 0, Voltage = 0;
- Printf_Init();
- /* ADC1 configuration *******************************************************/
- /* - Enable peripheral clocks */
- /* - DMA2_Stream0 channel2 configuration */
- /* - Configure ADC Channel7 pin as analog input */
- /* - Configure ADC1 Channel7 */
- while(1)
- {
- // 取两次采样的平均值
- ADCConvertedValueLocalTemp = ADC1ConvertedValue;
- OSTimeDly(10);
- ADCConvertedValueLocal = ADC1ConvertedValue;
- ADCConvertedValueLocal = (ADCConvertedValueLocalTemp + ADCConvertedValueLocal) >> 1;
-
- Percent = (ADCConvertedValueLocal*100/0x1000); //算出百分比
- Voltage = Percent*33; // 3.3V的电平,计算等效电平
- printf("\r\n ARMJISHU.COM神舟王STM32F439IGT开发板 AD模数转换实验\n\n\r");
- printf("\r 当前AD转换结果为:0x%X, 百分比为:%d%%,电压值:%d.%d%dV. \r",
- ADCConvertedValueLocal, Percent, Voltage/1000, (Voltage%1000)/100, (Voltage%100)/10);
-
- OSTimeDly(5);
- }
-
- }
- static void taskDisp(void *p_arg)
- {
- Display_Init();
- while (1)
- {
-
- Display();
-
- OSTimeDly(2);
- }
-
- }
感觉自己只是作了简单的修改,还请大家多指点指点哇~