OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5702|回复: 15

跪求指教~~~

[复制链接]

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2013-6-23
在线时间
11 小时
发表于 2013-6-29 14:20:25 | 显示全部楼层 |阅读模式


哪位可以帮我看看呀?这是怎么回事?本人是STM32菜鸟一个~~~~
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-29 16:20:49 | 显示全部楼层
没定义啊.
估计是库文件没加载.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12124
金钱
12124
注册时间
2013-3-8
在线时间
1288 小时
发表于 2013-6-29 16:24:21 | 显示全部楼层
回复【楼主位】米兰:
---------------------------------
库文件没加载!
回复 支持 反对

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2013-6-23
在线时间
11 小时
 楼主| 发表于 2013-6-29 17:05:17 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------原子哥,帮帮我呀。可以说明白点不?可是我已经没有错误了,只有警告!这是我用的头文件#include"stm32f10x_dma.h"
#include"stm32f10x_adc.h"
#include"stm32f10x_usart.h"
回复 支持 反对

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2013-6-23
在线时间
11 小时
 楼主| 发表于 2013-6-29 17:06:34 | 显示全部楼层
回复【3楼】augustedward:
---------------------------------
可以说明白不?谢谢啦~这问题困扰我好长时间啦
回复 支持 反对

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12124
金钱
12124
注册时间
2013-3-8
在线时间
1288 小时
发表于 2013-6-29 17:37:36 | 显示全部楼层
回复【5楼】米兰:
---------------------------------
贴图,过来看看。你用的编译器版本是多少?程序是自己写的,还是移植的。
对于版本号MDK470的,应该加头文件。stm32f10x.h.
回复 支持 反对

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2013-6-23
在线时间
11 小时
 楼主| 发表于 2013-6-30 08:53:01 | 显示全部楼层


 
回复 支持 反对

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2013-6-23
在线时间
11 小时
 楼主| 发表于 2013-6-30 08:54:38 | 显示全部楼层
回复【6楼】augustedward:
---------------------------------编译器是MDK412,程序是移植的。为什么会这样呢?谢谢啦
回复 支持 反对

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2013-6-23
在线时间
11 小时
 楼主| 发表于 2013-6-30 08:57:18 | 显示全部楼层


 
回复 支持 反对

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12124
金钱
12124
注册时间
2013-3-8
在线时间
1288 小时
发表于 2013-6-30 15:57:37 | 显示全部楼层
回复【9楼】米兰:
---------------------------------
头文件包含了,那么相应的C文件加入到工程里了没?
回复 支持 反对

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2013-6-23
在线时间
11 小时
 楼主| 发表于 2013-6-30 18:41:10 | 显示全部楼层


 
回复 支持 反对

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2013-6-23
在线时间
11 小时
 楼主| 发表于 2013-6-30 18:42:00 | 显示全部楼层
回复【10楼】augustedward:
---------------------------------是各种外设的C文件吗?
回复 支持 反对

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12124
金钱
12124
注册时间
2013-3-8
在线时间
1288 小时
发表于 2013-6-30 19:58:15 | 显示全部楼层
回复【12楼】米兰:
---------------------------------
是啊
回复 支持 反对

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2013-6-23
在线时间
11 小时
 楼主| 发表于 2013-7-1 08:50:35 | 显示全部楼层
回复【13楼】augustedward:
---------------------------------
10楼那里有,我已经添加了呀!可是还是不行,怎么回事呢?
回复 支持 反对

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12124
金钱
12124
注册时间
2013-3-8
在线时间
1288 小时
发表于 2013-7-1 21:45:21 | 显示全部楼层
回复【14楼】米兰:
---------------------------------
如果可以的话,上源代码的,我给看看!
回复 支持 反对

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2013-6-23
在线时间
11 小时
 楼主| 发表于 2013-7-2 14:00:19 | 显示全部楼层
回复【15楼】augustedward:
---------------------------------
#include"stm32f10x_lib.h"
/*#include"stm32f10x.h"  
#include"stm32f10x_dma.h"
#include"stm32f10x_adc.h"
#include"stm32f10x_usart.h"
#include"stm32f10x_rcc.h"*/ 
#include"stdio.h"
#include"stdint.h"
#define ADC1_DR_Address   ((uint32_t)0x4001244C)
  #ifdef __GNUC__
    #define UTCHAR_PROTOYPE int __io_putchar(int ch)
  #else
    #define UTCHAR_PROTOYPE int fputc(int ch,FILE *f)
  #endif
uint16_t  ADCConvertedValue;
uint16_t *p;

void RCC_config(void);
void GPIO_config(void);
void USART_config(void);
void DMA_config(void);
void ADC_config(void);
void ut_String(uint16_t);
void Delay(uint32_t nCount);

int main(void)
{
      RCC_config();


     GPIO_config();
     USART_config();
     DMA_config();
     ADC_config();
 while(1)
 {
     Delay(0x8FFFF);
   printf("ADC   =   %X  Volt   =   %d   mv\r\n",  ADCConvertedValue, ADCConvertedValue*3300/4096);
 
 }
}
 
void RCC_Config(void)
{
     ErrorStatus HSEStartUpStatus; //定义外部高速晶体启动状态枚举变量
 RCC_DeInit();
 RCC_HSEConfig(RCC_HSE_ON);
 HSEStartUpStatus=RCC_WaitForHSEStartUp();
 if(HSEStartUpStatus==SUCCESS)
 {
     RCC_HCLKConfig(RCC_SYSCLK_Div1);//设置AHB时钟,时钟源来自系统时钟的1分频
 RCC_HCLK2Config(RCC_HCLK_Div1); // //APB2为AHB时钟的1分频
   RCC_HCLK1Config(RCC_HCLK_Div2); ////APB1为AHB时钟的2分频
 RCC_ADCCLKConfig(RCC_PCLK2_Div4); 
         

 RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9); //配置PLL时钟 == 外部高速晶体时钟*9
   RCC_ADCCLKConfig(RCC_PCLK2_Div4);
 RCC_PLLCmd(ENABLE);
 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET) //等待PLL时钟就绪
 {
 }
 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);////配置系统时钟 = LL时钟
 while(RCC_GetSYSCLKSource()!=0x08) ////检查PLL时钟是否作为系统时钟
 {
 }
     }

 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);//使能DMA时钟
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1|RCC_APB2Periph_GPIOA,ENABLE);
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);


void GPIO_Config(void)
{
         GPIO_InitTypeDef GPIO_InitStructure;
 GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);
 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
 GPIO_Init(GPIOA,&GPIO_InitStructure);

 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
 GPIO_Init(GPIOA,&GPIO_InitStructure);

 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;
 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
 GPIO_Init(GPIOB,&GPIO_InitStructure);

}
 void DMA_Config(void)
 {
 
  DMA_InitTypeDef DMA_InitStructure;//定义DMA初始化结构体
DMA_DeInit(DMA1_Channel1);
DMA_InitStructure.DMA_PeripheralBaseAddr=ADC1_DR_Address;
  DMA_InitStructure.DMA_MemoryBaseAddr=(uint32_t)&ADCConvertedValue;
  DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC;
  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_M2M=DMA_M2M_Disable;
DMA_Init(DMA1_Channel1,&DMA_InitStructure);
DMA_Cmd(DMA1_Channel1,ENABLE);
 
 }
void ADC_Config(void)
{
        ADC_InitTypeDef ADC_InitStructure; //定义ADC的结构体变量
ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;//ADC1和ADC2的工作方式独立
    ADC_InitStructure.ADC_ScanConvMode=ENABLE; //使能扫描
ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;//ADC转换工作在连续模式
ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//有软件控制转换
ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//转换数据位右对齐
ADC_InitStructure.ADC_NbrOfChannel=1;//转换通道为通道1
ADC_Init(ADC1,&ADC_InitStructure); //初始化ADC

ADC_RegularChannelConfig(ADC1,ADC_Channel_9,1,ADC_SampleTime_28Cycles5);
ADC_DMACmd(ADC1,ENABLE);
ADC_Cmd(ADC1,ENABLE);
ADC_ResetCalibration(ADC1);//重置ADC1校准寄存器
        while(ADC_GetResetCalibrationStatus(ADC1));  //等待ADC1校准重置完成
ADC_StartCalibration(ADC1);//开始ADC1校准
while(ADC_GetCalibrationStatus(ADC1));//等待ADC1校准完成  ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能ADC1软件开始转换
}
void USART_Config(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;
    
USART_Init(USART1,&USART_InitStructure);
USART_Cmd(USART1,ENABLE);
}
/*void ut_String(uint16_t *p);
{
      while(*p)
  {
       USART_SendData(USART1,*P++);
   while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET)
   {
   }
  
  
  }  


}  */
void Delay(uint32_t nCount)
{
for(;nCount!=0;nCount--);

}
PUTCHAR_PROTOYPE
{
     USART_SendData(USART1, ch);
 while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET)
 {
 }

 return ch;
}
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-18 06:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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