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

请问下hal库和标准库当中spi的初始化问题

[复制链接]
詹科联手走天下吗 提问时间:2017-7-31 17:50 /
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE );  ----
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOD  | RCC_APB2Periph_GPIOG, ENABLE );


这是在标准库的初始化,可是hal库找不到这两个函数,我该怎么替代呢?



1 收藏 1 评论7 发布时间:2017-7-31 17:50

举报

7个回答
CC4 回答时间:2017-10-13 08:57:32
HAL库直接使用CubeMX配置就好了,

评分

参与人数 1ST金币 +1 收起 理由
zero99 + 1

查看全部评分

ctang 回答时间:2017-10-13 09:23:21
  1. void SystemClock_Config(void)
  2. {
  3.   RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
  4.   RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  5.   
  6.   /* Enable MSI Oscillator */
  7.   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_MSI;
  8.   RCC_OscInitStruct.MSIState = RCC_MSI_ON;
  9.   RCC_OscInitStruct.MSIClockRange = RCC_MSIRANGE_5;
  10.   RCC_OscInitStruct.MSICalibrationValue=0x00;
  11.   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
  12.   if (HAL_RCC_OscConfig(&RCC_OscInitStruct)!= HAL_OK)
  13.   {
  14.     /* Initialization Error */
  15.     while(1);
  16.   }
  17.   
  18.   /* Select MSI as system clock source and configure the HCLK, PCLK1 and PCLK2
  19.      clocks dividers */
  20.   RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
  21.   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_MSI;
  22.   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  23.   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;  
  24.   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;  
  25.   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0)!= HAL_OK)
  26.   {
  27.     /* Initialization Error */
  28.     while(1);
  29.   }
  30.   /* Enable Power Control clock */
  31.   __HAL_RCC_PWR_CLK_ENABLE();
  32.   
  33.   /* The voltage scaling allows optimizing the power consumption when the device is
  34.      clocked below the maximum system frequency, to update the voltage scaling value
  35.      regarding system frequency refer to product datasheet.  */
  36.   __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
  37.   
  38.   /* Disable Power Control clock */
  39.   __HAL_RCC_PWR_CLK_DISABLE();
  40.   
  41. }
复制代码
  1. void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)
  2. {
  3. GPIO_InitTypeDef  GPIO_InitStruct;

  4.   if (hspi->Instance == SPIx)
  5.   {
  6.     /*##-1- Enable peripherals and GPIO Clocks #################################*/
  7.     /* Enable GPIO TX/RX clock */
  8.     SPIx_SCK_GPIO_CLK_ENABLE();
  9.     SPIx_MISO_GPIO_CLK_ENABLE();
  10.     SPIx_MOSI_GPIO_CLK_ENABLE();
  11.     /* Enable SPI clock */
  12.     SPIx_CLK_ENABLE();

  13.     /*##-2- Configure peripheral GPIO ##########################################*/
  14.     /* SPI SCK GPIO pin configuration  */
  15.     GPIO_InitStruct.Pin       = SPIx_SCK_PIN;
  16.     GPIO_InitStruct.Mode      = GPIO_MODE_AF_PP;
  17.     GPIO_InitStruct.Pull      = GPIO_PULLDOWN;
  18.     GPIO_InitStruct.Speed     = GPIO_SPEED_FREQ_VERY_HIGH;
  19.     GPIO_InitStruct.Alternate = SPIx_SCK_AF;
  20.     HAL_GPIO_Init(SPIx_SCK_GPIO_PORT, &GPIO_InitStruct);

  21.     /* SPI MISO GPIO pin configuration  */
  22.     GPIO_InitStruct.Pin = SPIx_MISO_PIN;
  23.     GPIO_InitStruct.Alternate = SPIx_MISO_AF;
  24.     HAL_GPIO_Init(SPIx_MISO_GPIO_PORT, &GPIO_InitStruct);

  25.     /* SPI MOSI GPIO pin configuration  */
  26.     GPIO_InitStruct.Pin = SPIx_MOSI_PIN;
  27.     GPIO_InitStruct.Alternate = SPIx_MOSI_AF;
  28.     HAL_GPIO_Init(SPIx_MOSI_GPIO_PORT, &GPIO_InitStruct);

  29.     /*##-3- Configure the NVIC for SPI #########################################*/
  30.     /* NVIC for SPI */
  31.     HAL_NVIC_SetPriority(SPIx_IRQn, 1, 0);
  32.     HAL_NVIC_EnableIRQ(SPIx_IRQn);
  33.   }
  34. }
复制代码
这是SPI官方例程。

SPI_FullDuplex_ComIT.rar

下载

5.09 MB, 下载次数: 313, 下载积分: ST金币 -1

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

feiante 回答时间:2017-10-13 11:56:44
这个在自动生成的初始化函数中已经有了,不需要自己去写

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

无薪税绵 回答时间:2017-10-13 12:50:39
楼主可以参考一下这个文档。
Description of STM32F1xx HAL drivers.pdf (3.88 MB, 下载次数: 45)

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

power568 回答时间:2017-10-13 13:16:55
如果真要找,SPI的__HAL_RCC_SPI2_CLK_ENABLE()在文件stm32l0xx_hal_rcc_ex.h中;
__HAL_RCC_GPIOA_CLK_ENABLE等在文件stm32l0xx_hal_rcc.h中;如果不是L0系列的更换名字即可...

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

詹科联手走天下吗 回答时间:2017-12-4 11:27:03
谢谢各位
ach12397f83b 回答时间:2020-7-14 16:07:00
谢谢 很有用

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版