工程包含:adc dma timer1 usart , i2c等等
单片机源程序如下:
- //头文件
- #include "stm32f10x.h"
- #include "GPIOLIKE51.h"
- #include "stm32f10x_gpio.h"
- #include "clockoutput.h"
- #include "i2c.h"
- #include "stm32f10x_adc.h"
- #include "adc.h"
- #include "gpio.h"
- #include "dma.h"
- #include "stm32f10x_dma.h"
- #include "timer.h"
- #include "delay.h"
- #include "usart.h"
- //变量定义
- u8 temp = 0;
- u8 temp1 = 0;
- int ADC_ConvertedValue;
- float ADC_ConvertedValueLocal;
- extern u16 CCR1_Val;
- extern u16 CCR2_Val;
- extern u16 CCR3_Val;
- extern u8 sendbuf[2];
- //=============================================================================
- //文件名称:main
- //功能概要:主函数
- //参数说明:无
- //函数返回:int
- //=============================================================================
- int main(void)
- {
- /************时钟配置******************/
- //时钟在startup.s文件中已经设置,可在system_stm32f10x.c中查看
-
- /**************PC13引脚输出方波***************/
- GPIO_Configuration();
-
- /**************系统时钟输出***************/
- // ClockOutput_Configuration();
-
- /**************I2C通信初始化***************/
- // IIC_Init();
-
- /***************ADC初始化*****************/
- //ADC_Config();
- //ADC_Config_PA2();
-
- /***************ADC DMA初始化*****************/
- // DMA_Configuration();
- // ADC_Config_PA1PA2();
-
- /***************Timer1初始化*****************/
- //Timer1_Config();
-
- /****************timer3通道初始化**********************/
- //使能中断前要先打开对应外设时钟
- //Timer1_Interrupt_Initial();
- //Timer1_Config1();
-
- /****************ADC temperature initial**********************/
- //Temperature_Config();
-
- /****************usart initial**********************/
- //USART_Config();
-
- /****************usart DMA initial**********************/
- USART_Config();
- USART_DMA_Configuration();
- sendbuf[0] = 0x55;
- sendbuf[1] = 0xA5;
-
- delay_1us(100);
- while (1)
- {
- /**************I2C通信***************/
- //temp =SMBus_Read(0x55, 0x01, 1);
- //temp1 =SMBus_Read(0x55, 0x02, 1);
-
- /*********PC13灯闪烁********/
- {
- PCout(13)=1;
- delay_1us(60000);
- delay_1us(60000);
- delay_1us(60000);
- delay_1us(60000);
- delay_1us(60000);
- delay_1us(60000);
- PCout(13)=0;
- delay_1us(60000);
- delay_1us(60000);
- delay_1us(60000);
- delay_1us(60000);
- delay_1us(60000);
- delay_1us(60000);
- }
-
-
-
- /*********ADC启动转换********/
- //ADC_SoftwareStartConvCmd(ADC1, ENABLE); //软件启动
- //while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC )); //等待转换完成
- //ADC_ConvertedValue = ADC_GetConversionValue(ADC1); // 获取转换结果*ADC_ConvertedValue*
- //ADC_ConvertedValueLocal = (float)ADC_ConvertedValue*(3.3/4096); //计算实际电压*ADC_ConvertedValueLocal*
-
- /*********ADC DMA启动转换********/
- //ADC_SoftwareStartConvCmd(ADC1, ENABLE); //软件启动
- //while(!DMA_GetFlagStatus(DMA1_FLAG_TC1)); //等待转换完成
- //PA0
- //ADC_ConvertedValue = ADC_Value[0]; // 获取转换结果*ADC_ConvertedValue*
- //ADC_ConvertedValueLocal = (float)ADC_ConvertedValue*(3.3/4096); //计算实际电压*ADC_ConvertedValueLocal*
- //PA1
- //ADC_ConvertedValue = ADC_Value[1]; // 获取转换结果*ADC_ConvertedValue*
- //ADC_ConvertedValueLocal = (float)ADC_ConvertedValue*(3.3/4096); //计算实际电压*ADC_ConvertedValueLocal*
-
- /*********ADC temperature using********/
- //ADC_SoftwareStartConvCmd(ADC1, ENABLE); //软件启动
- //while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC )); //等待转换完成
- //ADC_ConvertedValue = ADC_GetConversionValue(ADC1); // 获取转换结果*ADC_ConvertedValue*
- //ADC_ConvertedValueLocal = (float)(( 1.38 - ADC_ConvertedValue*3.3/4096) /0.0043 + 25); //计算实际电压*ADC_ConvertedValueLocal*
-
- /*********usart using. send one byte test********/
- //SK_UsartSendChar(0x55);
- //SK_UsartSendChar(0xA5);
-
- /*********usart DMA using. send byte test********/
- if(temp == 0x01)
- {
- USART_Send_Data(sendbuf, 2);
- }
-
-
-
- }
- }
复制代码
所有资料51hei提供下载:
Temp.7z
(191.81 KB, 下载次数: 9)
|