搜索
查看: 2773|回复: 10

[已解决] stm32l476g_discovery 定义函数 出现问题

[复制链接]

该用户从未签到

5

主题

16

帖子

0

蝴蝶豆

中级会员

最后登录
2018-9-20
发表于 2018-8-26 18:51:47 | 显示全部楼层 |阅读模式
如图所示,说这个函数第一次定义,我该怎么修改?

826.png
回复

使用道具 举报

该用户从未签到

74

主题

3420

帖子

82

蝴蝶豆

社区小助手

最后登录
2023-11-12
发表于 2018-8-26 20:49:35 | 显示全部楼层
楼主截的图看不清,好像少了花括号。

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

91

主题

4756

帖子

4

蝴蝶豆

论坛元老

最后登录
2021-2-27
发表于 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

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

16

帖子

0

蝴蝶豆

中级会员

最后登录
2018-9-20
 楼主| 发表于 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);
}
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

971

帖子

176

蝴蝶豆

论坛元老

最后登录
2021-4-1
发表于 2018-8-27 09:08:10 | 显示全部楼层
在ADC.H中声明该函数
void ADC1_conf(void);

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

12

主题

496

帖子

111

蝴蝶豆

金牌会员

最后登录
2020-6-12
发表于 2018-8-27 09:08:27 | 显示全部楼层
看看头文件里函数的声明有没有丢分号什么的

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2017-12-6 11:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    49

    主题

    3724

    帖子

    429

    蝴蝶豆

    论坛元老

    最后登录
    2021-8-7
    发表于 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

    查看全部评分

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    16

    帖子

    0

    蝴蝶豆

    中级会员

    最后登录
    2018-9-20
     楼主| 发表于 2018-8-27 12:11:51 | 显示全部楼层
    按2、5、7楼所说的做了,然而并没有解决这个BUG
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    16

    帖子

    0

    蝴蝶豆

    中级会员

    最后登录
    2018-9-20
     楼主| 发表于 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);

    }
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    16

    帖子

    0

    蝴蝶豆

    中级会员

    最后登录
    2018-9-20
     楼主| 发表于 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
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

    GMT+8, 2024-4-29 22:34 , Processed in 0.208587 second(s), 51 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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