12.1 初学者重要提示
学习使用HAL库前,有必要对他们的基本设计框架有所了解,然后深入学习,效果更好。
为了方便调用,HAL库为各种外设基本都配了三套API,查询,中断和DMA。
12.2 HAL库的配置文件
HAL库有一个专门的配置文件叫stm32f4xx_hal_conf.h,这个文件里面有一个很重要的参数,就是HSE_VALUE,大家所设计板子使用的实际晶振大小一定要与这个数值一致。比如V6的外置晶振是8MHz,那么这里就务必配置宏定义为:
#define HSE_VALUE ((uint32_t)8000000)
完整的代码如下:
1. /* ########################## Module Selection ############################## */
2. /**
3. * @brief This is the list of modules to be used in the HAL driver
4. */
5. #define HAL_MODULE_ENABLED
6. #define HAL_ADC_MODULE_ENABLED
7. #define HAL_CAN_MODULE_ENABLED
8. #define HAL_HCD_MODULE_ENABLED
9.
10. /* 省略未写 */
11.
12. /* ########################## HSE/HSI Values adaptation ##################### */
13. /**
14. * @brief Adjust the value of External High Speed oscillator (HSE) used in your application.
15. * This value is used by the RCC HAL module to compute the system frequency
16. * (when HSE is used as system clock source, directly or through the PLL).
17. */
18. #if !defined (HSE_VALUE)
19. #define HSE_VALUE (8000000U) /*!< Value of the External oscillator in Hz */
20. #endif /* HSE_VALUE */
21.
22. #if !defined (HSE_STARTUP_TIMEOUT)
23. #define HSE_STARTUP_TIMEOUT (100U) /*!< Time out for HSE start up, in ms */
24. #endif /* HSE_STARTUP_TIMEOUT */
25.
26. /**
27. * @brief Internal High Speed oscillator (HSI) value.
28. * This value is used by the RCC HAL module to compute the system frequency
29. * (when HSI is used as system clock source, directly or through the PLL).
30. */
31. #if !defined (HSI_VALUE)
32. #define HSI_VALUE (16000000U) /*!< Value of the Internal oscillator in Hz*/
33. #endif /* HSI_VALUE */
34.
35. /**
36. * @brief Internal Low Speed oscillator (LSI) value.
37. */
38. #if !defined (LSI_VALUE)
39. #define LSI_VALUE (32000U)
40. #endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz
41. The real value may vary depending on the variations
42. in voltage and temperature. */
43. /**
44. * @brief External Low Speed oscillator (LSE) value.
45. */
46. #if !defined (LSE_VALUE)
47. #define LSE_VALUE (32768U) /*!< Value of the External Low Speed oscillator in Hz */
48. #endif /* LSE_VALUE */
49.
50. #if !defined (LSE_STARTUP_TIMEOUT)
51. #define LSE_STARTUP_TIMEOUT (5000U) /*!< Time out for LSE start up, in ms */
52. #endif /* LSE_STARTUP_TIMEOUT */
53.
54. /**
55. * @brief External clock source for I2S peripheral
56. * This value is used by the I2S HAL module to compute the I2S clock source
57. * frequency, this source is inserted directly through I2S_CKIN pad.
58. */
59. #if !defined (EXTERNAL_CLOCK_VALUE)
60. #define EXTERNAL_CLOCK_VALUE (12288000U) /*!< Value of the External oscillator in Hz*/
61. #endif /* EXTERNAL_CLOCK_VALUE */
62.
63. /* Tip: To avoid modifying this file each time you need to use different HSE,
64. === you can define the HSE value in your toolchain compiler preprocessor. */
65.
66. /* ########################### System Configuration ######################### */
67. /**
68. * @brief This is the HAL system configuration section
69. */
70. #define VDD_VALUE (3300U) /*!< Value of VDD in mv */
71. #define TICK_INT_PRIORITY (0x0FU) /*!< tick interrupt priority */
72. #define USE_RTOS 0U
73. #define PREFETCH_ENABLE 1U
74. #define INSTRUCTION_CACHE_ENABLE 1U
75. #define DATA_CACHE_ENABLE 1U
76.
77. #define USE_HAL_ADC_REGISTER_CALLBACKS 0U /* ADC register callback disabled */
78. #define USE_HAL_CAN_REGISTER_CALLBACKS 0U /* CAN register callback disabled */
79. #define USE_HAL_CEC_REGISTER_CALLBACKS 0U /* CEC register callback disabled */
80. /* 省略未写 */
81. #define USE_HAL_UART_REGISTER_CALLBACKS 0U /* UART register callback disabled */
82. #define USE_HAL_USART_REGISTER_CALLBACKS 0U /* USART register callback disabled */
83. #define USE_HAL_WWDG_REGISTER_CALLBACKS 0U /* WWDG register callback disabled */
84.
85. /* ########################## Assert Selection ############################## */
86. /**
87. * @brief Uncomment the line below to expanse the "assert_param" macro in the
88. * HAL drivers code
89. */
90. /* #define USE_FULL_ASSERT 1U */
91.
92. /* ################## Ethernet peripheral configuration ##################### */
93.
94. /* Section 1 : Ethernet peripheral configuration */
95.
96. /* MAC ADDRESS: MAC_ADDR0:MAC_ADDR1:MAC_ADDR2:MAC_ADDR3:MAC_ADDR4:MAC_ADDR5 */
97. #define MAC_ADDR0 2U
98. #define MAC_ADDR1 0U
99. #define MAC_ADDR2 0U
100. #define MAC_ADDR3 0U
101. #define MAC_ADDR4 0U
102. #define MAC_ADDR5 0U
103.
104. /* Definition of the Ethernet driver buffers size and count */
105. #define ETH_RX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for receive */
106. #define ETH_TX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for transmit */
107. #define ETH_RXBUFNB (4U) /* 4 Rx buffers of size ETH_RX_BUF_SIZE */
108. #define ETH_TXBUFNB (4U) /* 4 Tx buffers of size ETH_TX_BUF_SIZE */
109.
110. /* Section 2: PHY configuration section */
111.
112. /* DP83848 PHY Address*/
113. #define DP83848_PHY_ADDRESS 0x01U
114. /* PHY Reset delay these values are based on a 1 ms Systick interrupt*/
115. #define PHY_RESET_DELAY (0x000000FFU)
116. /* PHY Configuration delay */
117. #define PHY_CONFIG_DELAY (0x00000FFFU)
118.
119. #define PHY_READ_TO (0x0000FFFFU)
120. #define PHY_WRITE_TO (0x0000FFFFU)
121.
122. /* Section 3: Common PHY Registers */
123.
124. #define PHY_BCR ((uint16_t)0x00) /*!< Transceiver Basic Control Register */
125. #define PHY_BSR ((uint16_t)0x01) /*!< Transceiver Basic Status Register */
上一篇:第13章 STM32F429启动过程详解
下一篇:第11章 STM32F429移植SEGGER的硬件异常分析
推荐阅读最新更新时间:2024-11-11 13:10
推荐帖子
- zigbee编程求助
- 求救,为什么会有这个错误,我是按照书上来编的。。。zigbee编程求助你在你这个结构体的定义的typedefstruct后面加个结构体类型名试试。楼主,请注意,你的这个结构体定义里面有两个变量,这个变量的数据类型是否有定义了呢 我是按照书上来编程的,所以我也不知道有没有编译 那就不在知道了,但是书上的东西不一定很全哦。你最好理解清楚了,再写哦。字面意思是你定义重了。你用ctrl+shift+f找一下其他地方,要有你直接#include就可以 嗯,多谢了
- 大炮的哈哈哈 RF/无线
- 【Labview 概念】波形图-DAQ
- 我们使用DAQ进行数据采集时,采集卡得到的数组,每列表示一个通道所采集到的数据,所以用波形图显示时请先用数组转置。【Labview概念】波形图-DAQ你的0回复我已经顶了很多了这几天啊~
- 安_然 测试/测量
- 速度围观了---下载中心最受欢迎的AVR学习资源TOP10
- 下载中心最受欢迎的AVR学习资源TOP10EEWORLD下载中心简直可以称作资料的海洋,学习的宝库!现在下载中心的各种学习资源汗牛充栋!为了更便于大家的了解,同时也为了把更好的子牙UN推荐给大家,使大家在浏览下载中心的资源的时候,能够首先发现最受欢迎的好资源,现在小编准备按照资源分类将每种资源的TOP10给大家整理出来,希望大家能够更好的学习!在这个TOP10系列推荐贴里面,我们不是简单的按照下载排行榜的前10位罗列出来,而是进行了适当的取舍,尽量选
- tiankai001 下载中心专版
- MSP430程序烧录出现问题
- 用file:///C:\Users\lenovo\Documents\TencentFiles\2469660760\Image\C2C\Y(YW33LZ$U2{$file:///C:\Users\lenovo\Documents\TencentFiles\2469660760\Image\C2C\Y(YW33LZ$U2{$file:///C:\Users\lenovo\Documents\TencentFiles\2469660760\Image\C2C\Y(YW33LZ$U2{$
- 史儒鑫 微控制器 MCU
- 如何使用430单片机做低频信号源?
- 1.基本要求(1)正弦波信号源①信号频率:20Hz~20kHz;②频率稳定度:优于10-4③非线性失真系数≤3%(2)脉冲波信号源①信号频率:20Hz~20kHz可步进调整,步长5Hz;②上升时间和下降时间:≤1μs③平顶斜降:≤5%④脉冲占空比:2%~98%步进可调,步长2%;(3)上述两个信号源公共要求①在负载为600Ω时,输出信号不小于6Vp-p。②完成5位频率的数字显示。大三的老油条了!刚学的430o(∩_∩)o哈哈!有谁能介绍一个方案?主要是
- guosiyuan 微控制器 MCU
- 敲重点,西门子PLC与不同传感器的接线方式及应用
- 导语:了解西门子PLC与NPN、PNP传感器的接线方法对于工业自动化控制至关重要。本文将为您详细介绍西门子PLC的特点、NPN和PNP传感器的应用场景,以及如何正确地完成接线操作。一、西门子PLC特点西门子PLC是一种广泛应用于工业自动化控制的设备,具有以下特点:1.稳定性高:西门子PLC采用先进的微处理器技术,能够在恶劣的工作环境下保持稳定运行。2.高精度:西门子PLC的模拟量输入输出模块具有高精度,适用于各种高精度控制需求。3.易操作:西门子PLC的
- 2020da 工控电子
设计资源 培训 开发板 精华推荐
- 基于 LTC4410 的 USB 兼容充电器充分利用 USB 输入的可用功率
- NCP1060BUCKGEVB:用于低功率离线 SMPS 评估板的高压开关
- 基于AD5934的全隔离电导率测量数据采集系统
- LT1170IQ、5V/5A 正向转换器的典型应用
- 施密特触发振荡器 NCX2200 低压比较器的典型应用
- SY89825U,SY89825U 评估板,2.5/3.3V,1:22 高性能、低电压 PECL 总线时钟驱动器和转换器,带内部端接
- LTC2284IUP 演示板,DeMUX 双路 ADC,+3.0V,105Msps 14 位 1MHz
- LTC2754-16 演示板、16 位、四路串行、SoftSpan、1LSB INL Iout DAC
- 使用 Analog Devices 的 LT3467AES67 的参考设计
- LTC3646EMSE-1 5V、1A 同步降压转换器的典型应用电路