请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32l476g_discovery 定义函数 出现问题

[复制链接]
bbbone 提问时间:2018-8-26 18:51 /
如图所示,说这个函数第一次定义,我该怎么修改?

826.png
收藏 评论10 发布时间:2018-8-26 18:51

举报

10个回答
wenyangzeng 回答时间:2018-8-26 20:49:35
楼主截的图看不清,好像少了花括号。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

feixiang20 回答时间:2018-8-26 23:46:36
菜单栏打开Project->Option for Target‘STM32L476G-Discovery’->User
参考人家是怎么弄的,看看自己有没有漏掉什么代码规则,初始化代码设置有没有漏写
#include "stm32l4xx.h"
#include "stm32l476g_discovery.h"
UART_HandleTypeDef huart2;
GPIO_InitTypeDef GPIO_InitStruct;
void configure_system_clock(void);

int main(void)
{
    HAL_Init(); // HAL Init

    configure_system_clock(); // Configure Clock
    __GPIOD_CLK_ENABLE(); // Enable GPIOD clock
    __USART2_CLK_ENABLE(); // Enable USART2 Clock
    huart2.Instance = USART2;
    huart2.Init.BaudRate = 9600;
    huart2.Init.WordLength = UART_WORDLENGTH_8B;
    huart2.Init.StopBits = UART_STOPBITS_1;
    huart2.Init.Parity = UART_PARITY_NONE;
    huart2.Init.Mode = UART_MODE_TX_RX;
    huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
    HAL_UART_Init(&huart2);

后面就不粘贴了,可以参考下


评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

bbbone 回答时间:2018-8-27 08:14:29
有初始化代码,括号也没少
#include "stm32l4xx.h"
#include "stm32l476g_discovery.h"

ADC_HandleTypeDef  hadc1;
DMA_HandleTypeDef  hdma_adc1;

void ADC1_conf(void)
{
  ADC_ChannelConfTypeDef sConfig;
  HAL_ADC_Init(&hadc1);
  /**Configure the global features of the ADC (Clock, Resolution, Data,Alignment and number of conversion) */
  hadc1.Instance = ADC1;
  hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2;
  hadc1.Init.Resolution = ADC_RESOLUTION_12B;
  hadc1.Init.ScanConvMode = ENABLE;    //upward
  hadc1.Init.ContinuousConvMode = ENABLE;
  hadc1.Init.DiscontinuousConvMode = DISABLE;
  hadc1.Init.ExternalTrigConvEdge = ADC_SOFTWARE_START;    //software trigger
  hadc1.Init.ExternalTrigConvEdge  = ADC_EXTERNALTRIGCONVEDGE_RISING;     //rising edge
  hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;     //< Data right alignment
  hadc1.Init.NbrOfConversion = 2;                /* This parameter must be a number between Min_Data = 1 and Max_Data = 16.
                                                Note: This parameter must be modified when no conversion is on going on regular group (ADC disabled,
                                                or ADC enabled without continuous mode or external trigger that could launch a conversion). */
  hadc1.Init.DMAContinuousRequests = ENABLE;
  hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;


  /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. */
  sConfig.Channel = ADC_CHANNEL_5;
  sConfig.Rank = 1;
  sConfig.SamplingTime = ADC_SAMPLETIME_12CYCLES_5;  //  Sampling time 12.5 ADC clock cycles at ADC resolution 12 bits.
  HAL_ADC_ConfigChannel(&hadc1, &sConfig);

  /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. */
  sConfig.Channel = ADC_CHANNEL_3;
  sConfig.Rank = 2;
  HAL_ADC_ConfigChannel(&hadc1, &sConfig);
}
zhao.zhao 回答时间:2018-8-27 09:08:10
在ADC.H中声明该函数
void ADC1_conf(void);

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

随风飘扬 回答时间:2018-8-27 09:08:27
看看头文件里函数的声明有没有丢分号什么的

评分

参与人数 1蝴蝶豆 +1 收起 理由
zero99 + 1

查看全部评分

七哥 回答时间:2018-8-27 09:23:47
本帖最后由 toofree 于 2018-8-27 09:25 编辑

见5楼,

在ADC.H中声明该函数
void ADC1_conf(void);

在.c中定义函数,在.h中声明函数。
在要调用ADC1_conf()函数的.c文件中,把ADC.H包含进来,#include ADC.H


套路就是这么个套路,c语言功底,好好学习一下

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

bbbone 回答时间:2018-8-27 12:11:51
按2、5、7楼所说的做了,然而并没有解决这个BUG
bbbone 回答时间:2018-8-27 12:12:34
#include "stm32l4xx.h"
//#include "stm32l476g_discovery.h"
#include "adc.h"
#include "stm32l4xx_hal_adc.h"
ADC_HandleTypeDef  hadc1;
DMA_HandleTypeDef  hdma_adc1;

ADC_ChannelConfTypeDef sConfig;

void ADC1_conf(void)
{
        HAL_Init(); // HAL Init
  /**Configure the global features of the ADC (Clock, Resolution, Data,Alignment and number of conversion) */
  hadc1.Instance = ADC1;
  hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2;
  hadc1.Init.Resolution = ADC_RESOLUTION_12B;
  hadc1.Init.ScanConvMode = ENABLE;    //upward
  hadc1.Init.ContinuousConvMode = ENABLE;
  hadc1.Init.DiscontinuousConvMode = DISABLE;
  hadc1.Init.ExternalTrigConvEdge = ADC_SOFTWARE_START;    //software trigger
  hadc1.Init.ExternalTrigConvEdge  = ADC_EXTERNALTRIGCONVEDGE_RISING;     //rising edge
  hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;     //< Data right alignment
  hadc1.Init.NbrOfConversion = 2;                /* This parameter must be a number between Min_Data = 1 and Max_Data = 16.
                                                Note: This parameter must be modified when no conversion is on going on regular group (ADC disabled,
                                                or ADC enabled without continuous mode or external trigger that could launch a conversion). */
  hadc1.Init.DMAContinuousRequests = ENABLE;
  hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;


  /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. */
  sConfig.Channel = ADC_CHANNEL_5;
  sConfig.Rank = 1;
  sConfig.SamplingTime = ADC_SAMPLETIME_12CYCLES_5;  //  Sampling time 12.5 ADC clock cycles at ADC resolution 12 bits.
  HAL_ADC_ConfigChannel(&hadc1, &sConfig);

  /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. */
  sConfig.Channel = ADC_CHANNEL_3;
  sConfig.Rank = 2;
  HAL_ADC_ConfigChannel(&hadc1, &sConfig);

}
bbbone 回答时间:2018-8-27 12:43:13
上半部分是adc.c
这一部分是adc.h

#define MX_ADC1_Init
/* Definition for USARTx Pins */

#include "stm32l4xx.h"
#include "stm32l476g_discovery.h"

void ADC1_conf(void);
//void HAL_ADC_Init(ADC_HandleTypeDef* hadc);
void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc);
void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc);

#define USARTx_TX_PIN                    GPIO_PIN_6
#define USARTx_TX_GPIO_PORT              GPIOB
#define USARTx_TX_AF                     GPIO_AF7_USART1
#define USARTx_RX_PIN                    GPIO_PIN_7
#define USARTx_RX_GPIO_PORT              GPIOB
#define USARTx_RX_AF                     GPIO_AF7_USART1
Dandjinh 回答时间:2018-8-27 12:50:38
"first defined here"是不是意味着有其他地方defined呢?有编译的报错截图吗?

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版