当前位置:网站首页>Weidongshan Internet of things learning lesson 1
Weidongshan Internet of things learning lesson 1
2022-07-05 08:12:00 【qq_ forty-one million seven hundred and forty-four thousand fou】
I reviewed it again today STM32 Internet of things programming for . Mainly review the past STM32 Clock settings for , And put notes :
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0}; // hold RCC_OscInitStruct The variable is cleared .
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; // hold RCC_ClkInitStruct The variable is cleared .
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; // Clock type
/*
#define RCC_OSCILLATORTYPE_NONE 0x00000000U // No clock
#define RCC_OSCILLATORTYPE_HSE 0x00000001U // Use the external oscillator crystal oscillator as the clock
#define RCC_OSCILLATORTYPE_HSI 0x00000002U // Use internal high-speed clock , The clock frequency is 8MHz
#define RCC_OSCILLATORTYPE_LSE 0x00000004U // Use an external low-speed clock , The clock frequency is 32.768kHZ
#define RCC_OSCILLATORTYPE_LSI 0x00000008U // Internal low-power sleep clock , The frequency is 30~60Hz
*/
RCC_OscInitStruct.HSEState = RCC_HSE_OFF; // Turn off the clock when the external crystal oscillator is not used , Open it when you need it .
RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
/* One function is to empty HSE frequency division , initialization HSE frequency division ; You can also rewrite RCC_HSE_PREDIV_DIV1,
Rewrite directly RCC_CFGR Register value , But it's useless. Later, it will be changed back by the later code , So it usually doesn't move here .*/
RCC_OscInitStruct.HSIState = RCC_HSI_ON; // If you use an internal clock , Just turn it on , Close it before you use it .
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; // Turn on the PLL , Close the PLL without frequency division
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2;
/*
If it is RCC_PLLSOURCE_HSI_DIV2, The PLL uses the internal clock as the benchmark , Frequency is 8MHZ After dichotomy, it becomes 4MHz.
If it is RCC_PLLSOURCE_HSE, The PLL uses the external clock as the reference , The frequency is the external clock frequency
*/
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL16;
/*
#define RCC_PLL_MUL2 RCC_CFGR_PLLMULL2
#define RCC_PLL_MUL3 RCC_CFGR_PLLMULL3
#define RCC_PLL_MUL4 RCC_CFGR_PLLMULL4
#define RCC_PLL_MUL5 RCC_CFGR_PLLMULL5
#define RCC_PLL_MUL6 RCC_CFGR_PLLMULL6
#define RCC_PLL_MUL7 RCC_CFGR_PLLMULL7
#define RCC_PLL_MUL8 RCC_CFGR_PLLMULL8
#define RCC_PLL_MUL9 RCC_CFGR_PLLMULL9
#define RCC_PLL_MUL10 RCC_CFGR_PLLMULL10
#define RCC_PLL_MUL11 RCC_CFGR_PLLMULL11
#define RCC_PLL_MUL12 RCC_CFGR_PLLMULL12
#define RCC_PLL_MUL13 RCC_CFGR_PLLMULL13
#define RCC_PLL_MUL14 RCC_CFGR_PLLMULL14
#define RCC_PLL_MUL15 RCC_CFGR_PLLMULL15
#define RCC_PLL_MUL16 RCC_CFGR_PLLMULL16
From 2 To 16 There are these frequencies to choose
*/
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) // Perform initialization of clock frequency configuration , Maximum output of external crystal oscillator clock after frequency doubling 72M
{
while(1);
}
/** Initializes the CPU, AHB and APB busses clocks
*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK
| RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
/*
RCC_CLOCKTYPE_SYSCLK Select this to configure the system clock HSE,HSI, still PLL,
RCC_CLOCKTYPE_HCLK Select this to configure AHB The clock ,
RCC_CLOCKTYPE_PCLK1 Select this to configure APB1 The clock of ,
RCC_CLOCKTYPE_PCLK2 Select this to configure APB2 The clock of .
*/
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
/*
#define RCC_SYSCLKSOURCE_HSI RCC_CFGR_SW_HSI !< Select the internal high-speed clock as the system clock
#define RCC_SYSCLKSOURCE_HSE RCC_CFGR_SW_HSE !< Select the external crystal oscillator clock as the system clock
#define RCC_SYSCLKSOURCE_PLLCLK RCC_CFGR_SW_PLL !< Choose PLL clock as the system clock
*/
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; //AHB Clock division is divided by 1~512 One of the values
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; //APB1 The clock frequency division , First get from the system clock frequency division AHB The clock , Again from AHB The clock is divided according to this option APB1 The frequency of , The final calculation shall not exceed 36MHz
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; //APB2 The clock frequency division , First get from the system clock frequency division AHB The clock , Again from AHB The clock is divided according to this option APB2 The frequency of , The final calculation shall not exceed 72MHz
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) // Execute the configuration of the system clock and the clock of the system clock frequency division to the following components .
{
while(1);
}
}
边栏推荐
- Sql Server的存儲過程詳解
- Simple design description of MIC circuit of ECM mobile phone
- C WinForm [change the position of the form after running] - Practical Exercise 4
- Sizeof (function name) =?
- How to define guid in AMI code
- Record the visual shock of the Winter Olympics and the introduction of the screen 2
- Take you to understand the working principle of lithium battery protection board
- Some tips for using source insight (solve the problem of selecting all)
- Compilation warning solution sorting in Quartus II
- Connection mode - bridge and net
猜你喜欢
List of linked lists
FIO测试硬盘性能参数和实例详细总结(附源码)
Hardware 3 -- function of voltage follower
Soem EtherCAT source code analysis attachment 1 (establishment of communication operation environment)
LED display equipment records of the opening ceremony of the Beijing Winter Olympics
How to select conductive slip ring
C language enhancement -- pointer
Connection mode - bridge and net
Let's briefly talk about the chips commonly used in mobile phones - OVP chips
Shape template matching based on Halcon learning [VII] reuse_ model. Hdev routine
随机推荐
C WinForm [get file path -- traverse folder pictures] - practical exercise 6
Embedded composition and route
Halcon's practice based on shape template matching [1]
Zero length array in GNU C
Communication standard -- communication protocol
Network communication model -- Network OSI tcp/ip layering
Fundamentals of C language
Negative pressure generation of buck-boost circuit
Several implementation schemes of anti reverse connection protection of positive and negative poles of power supply!
How to define guid in AMI code
Programming knowledge -- basis of C language
Programming knowledge -- assembly knowledge
Network communication process
Basic information commands and functions of kernel development
Drive LED -- GPIO control
Ble encryption details
Several important parameters of LDO circuit design and type selection
matlab timeserise
Classic application of MOS transistor circuit design (2) - switch circuit design
1-stm32 operation environment construction