找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2009|回复: 0
收起左侧

stm32f103C8T6部分外设的使用源程序

[复制链接]
ID:575115 发表于 2019-11-17 22:58 | 显示全部楼层 |阅读模式
工程包含:adc dma timer1 usart , i2c等等

单片机源程序如下:
  1. //头文件
  2. #include "stm32f10x.h"
  3. #include "GPIOLIKE51.h"
  4. #include "stm32f10x_gpio.h"
  5. #include "clockoutput.h"
  6. #include "i2c.h"
  7. #include "stm32f10x_adc.h"
  8. #include "adc.h"
  9. #include "gpio.h"
  10. #include "dma.h"
  11. #include "stm32f10x_dma.h"
  12. #include "timer.h"
  13. #include "delay.h"
  14. #include "usart.h"

  15. //变量定义
  16. u8 temp = 0;
  17. u8 temp1 = 0;
  18. int ADC_ConvertedValue;
  19. float        ADC_ConvertedValueLocal;
  20. extern u16 CCR1_Val;
  21. extern u16 CCR2_Val;
  22. extern u16 CCR3_Val;

  23. extern  u8 sendbuf[2];

  24. //=============================================================================
  25. //文件名称:main
  26. //功能概要:主函数
  27. //参数说明:无
  28. //函数返回:int
  29. //=============================================================================
  30. int main(void)
  31. {
  32.         /************时钟配置******************/
  33.   //时钟在startup.s文件中已经设置,可在system_stm32f10x.c中查看
  34.        
  35.         /**************PC13引脚输出方波***************/
  36.         GPIO_Configuration();
  37.        
  38.   /**************系统时钟输出***************/
  39.   //        ClockOutput_Configuration();
  40.        
  41.   /**************I2C通信初始化***************/
  42.   //        IIC_Init();
  43.        
  44.   /***************ADC初始化*****************/
  45.         //ADC_Config();
  46.         //ADC_Config_PA2();
  47.        
  48.          /***************ADC DMA初始化*****************/
  49.   //        DMA_Configuration();
  50.   //        ADC_Config_PA1PA2();
  51.        
  52.          /***************Timer1初始化*****************/
  53.          //Timer1_Config();
  54.          
  55.          /****************timer3通道初始化**********************/
  56.          //使能中断前要先打开对应外设时钟
  57.          //Timer1_Interrupt_Initial();
  58.          //Timer1_Config1();
  59.          
  60.          /****************ADC temperature initial**********************/         
  61.          //Temperature_Config();
  62.          
  63.                 /****************usart initial**********************/       
  64.           //USART_Config();
  65.        
  66.          /****************usart DMA initial**********************/
  67.          USART_Config();
  68.          USART_DMA_Configuration();
  69.          sendbuf[0] = 0x55;
  70.          sendbuf[1] = 0xA5;
  71.        
  72.         delay_1us(100);
  73.         while (1)
  74.         {
  75.                 /**************I2C通信***************/
  76.     //temp =SMBus_Read(0x55, 0x01, 1);
  77.     //temp1 =SMBus_Read(0x55, 0x02, 1);
  78.                
  79.     /*********PC13灯闪烁********/
  80.          {
  81.                  PCout(13)=1;
  82.                 delay_1us(60000);
  83.                 delay_1us(60000);       
  84.                 delay_1us(60000);       
  85.                 delay_1us(60000);
  86.                 delay_1us(60000);       
  87.                 delay_1us(60000);       
  88.                 PCout(13)=0;
  89.                 delay_1us(60000);       
  90.                 delay_1us(60000);       
  91.                 delay_1us(60000);       
  92.                 delay_1us(60000);
  93.                 delay_1us(60000);       
  94.                 delay_1us(60000);
  95.          }
  96.                        
  97.                  

  98.    /*********ADC启动转换********/               
  99.           //ADC_SoftwareStartConvCmd(ADC1, ENABLE);                //软件启动
  100.           //while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));  //等待转换完成
  101.           //ADC_ConvertedValue = ADC_GetConversionValue(ADC1); // 获取转换结果*ADC_ConvertedValue*       
  102.           //ADC_ConvertedValueLocal = (float)ADC_ConvertedValue*(3.3/4096);   //计算实际电压*ADC_ConvertedValueLocal*
  103.    
  104.                 /*********ADC DMA启动转换********/
  105.                 //ADC_SoftwareStartConvCmd(ADC1, ENABLE);                //软件启动
  106.           //while(!DMA_GetFlagStatus(DMA1_FLAG_TC1));  //等待转换完成
  107.           //PA0
  108.                 //ADC_ConvertedValue = ADC_Value[0]; // 获取转换结果*ADC_ConvertedValue*       
  109.           //ADC_ConvertedValueLocal = (float)ADC_ConvertedValue*(3.3/4096);   //计算实际电压*ADC_ConvertedValueLocal*
  110.     //PA1
  111.                 //ADC_ConvertedValue = ADC_Value[1]; // 获取转换结果*ADC_ConvertedValue*       
  112.           //ADC_ConvertedValueLocal = (float)ADC_ConvertedValue*(3.3/4096);   //计算实际电压*ADC_ConvertedValueLocal*

  113.                 /*********ADC temperature using********/
  114.                 //ADC_SoftwareStartConvCmd(ADC1, ENABLE);                //软件启动
  115.           //while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));  //等待转换完成
  116.           //ADC_ConvertedValue = ADC_GetConversionValue(ADC1); // 获取转换结果*ADC_ConvertedValue*       
  117.           //ADC_ConvertedValueLocal = (float)(( 1.38 - ADC_ConvertedValue*3.3/4096) /0.0043 + 25);   //计算实际电压*ADC_ConvertedValueLocal*
  118.                
  119.                 /*********usart using. send one byte test********/
  120.                 //SK_UsartSendChar(0x55);
  121.                 //SK_UsartSendChar(0xA5);
  122.                
  123.                 /*********usart DMA using. send  byte test********/       
  124.                 if(temp == 0x01)
  125.                 {
  126.                    USART_Send_Data(sendbuf, 2);
  127.                 }
  128.                
  129.                
  130.                
  131.         }
  132. }
复制代码

所有资料51hei提供下载:
Temp.7z (191.81 KB, 下载次数: 9)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表