打印
[应用相关]

在 Keil uVision4 MDK下配置开发STM32F103Z完整教程

[复制链接]
手机看帖
扫描二维码
随时随地手机跟帖
21
结合国际经验|  楼主 | 2022-3-27 16:54 | 只看该作者 回帖奖励 |倒序浏览
实例:
31.      /*选择要控制的 GPIOC 引脚*/                                                               
32.      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;   
33.   
34.      /*设置引脚模式为通用推挽输出*/  
35.      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
36.   
37.      /*设置引脚速率为 50MHz */      
38.      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
-----------------------------------------------------------------------

使用特权

评论回复
22
结合国际经验|  楼主 | 2022-3-27 16:55 | 只看该作者
GPIO控制:
void GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_InitStruct);
功能:根据 GPIOx 初始化GPIO
参数1:允许指为 GPIOA、GPIOB、GPIOC...GPIOG
参数2:GPIO_InitTypeDef 类型的指针,包含了指定引脚、输出工作状态和频率

使用特权

评论回复
23
结合国际经验|  楼主 | 2022-3-27 16:56 | 只看该作者
实例:
40.      /*调用库函数,初始化 GPIOC*/  
41.      GPIO_Init(GPIOC, &GPIO_InitStructure);

使用特权

评论回复
24
结合国际经验|  楼主 | 2022-3-27 16:57 | 只看该作者
void GPIO_SetBits  ( GPIO_TypeDef *  GPIOx, uint16_t  GPIO_Pin)
功能:设置GPIO引脚输出高电平
参数1:允许指为 GPIOA、GPIOB、GPIOC...GPIOG
参数2:要控制的引脚号 Pin0~Pin15

使用特权

评论回复
25
结合国际经验|  楼主 | 2022-3-27 16:58 | 只看该作者
void GPIO_ResetBits  ( GPIO_TypeDef *  GPIOx, uint16_t  GPIO_Pin)
功能:设置GPIO引脚输出低电平
参数1:允许指为 GPIOA、GPIOB、GPIOC...GPIOG
参数2:要控制的引脚号 Pin0~Pin15

使用特权

评论回复
26
结合国际经验|  楼主 | 2022-3-27 16:59 | 只看该作者
外设时钟控制:
void RCC_APB2PeriphResetCmd  ( uint32_t  RCC_APB2Periph,  FunctionalState  NewState)
功能:开启或关闭的挂接在APB2总线上的外设时钟

使用特权

评论回复
27
结合国际经验|  楼主 | 2022-3-27 17:00 | 只看该作者
参数1:
        RCC_APB2Periph_AFIO,
        RCC_APB2Periph_GPIOA,
        RCC_APB2Periph_GPIOB,
        RCC_APB2Periph_GPIOC,
        RCC_APB2Periph_GPIOD,
        RCC_APB2Periph_GPIOE,
        RCC_APB2Periph_GPIOF,
        RCC_APB2Periph_GPIOG,
        RCC_APB2Periph_ADC1,
        RCC_APB2Periph_ADC2,
        RCC_APB2Periph_TIM1,
        RCC_APB2Periph_SPI1,
        RCC_APB2Periph_TIM8,
        RCC_APB2Periph_USART1,
        RCC_APB2Periph_ADC3,
        RCC_APB2Periph_TIM15,
        RCC_APB2Periph_TIM16,
        RCC_APB2Periph_TIM17,
        RCC_APB2Periph_TIM9,
        RCC_APB2Periph_TIM10,
        RCC_APB2Periph_TIM11

使用特权

评论回复
28
结合国际经验|  楼主 | 2022-3-27 17:01 | 只看该作者
参数2:使能外设时钟或关闭外设时钟
        ENABLE or DISABLE

void RCC_APB1PeriphClockCmd  ( uint32_t  RCC_APB1Periph, FunctionalState  NewState)

使用特权

评论回复
29
结合国际经验|  楼主 | 2022-3-27 17:02 | 只看该作者
功能:开启或关闭的挂接在APB2总线上的外设时钟
参数1:
        RCC_APB1Periph_TIM2,
        RCC_APB1Periph_TIM3,
        RCC_APB1Periph_TIM4,
        RCC_APB1Periph_TIM5,
        RCC_APB1Periph_TIM6,
        RCC_APB1Periph_TIM7,
        RCC_APB1Periph_WWDG,
        RCC_APB1Periph_SPI2,
        RCC_APB1Periph_SPI3,
        RCC_APB1Periph_USART2,
        RCC_APB1Periph_USART3,
        RCC_APB1Periph_USART4,
        RCC_APB1Periph_USART5,
        RCC_APB1Periph_I2C1,
        RCC_APB1Periph_I2C2,
        RCC_APB1Periph_USB,
        RCC_APB1Periph_CAN1,
        RCC_APB1Periph_BKP,
        RCC_APB1Periph_PWR,
        RCC_APB1Periph_DAC,
        RCC_APB1Periph_CEC,
        RCC_APB1Periph_TIM12,
        RCC_APB1Periph_TIM13,
        RCC_APB1Periph_TIM14

使用特权

评论回复
30
结合国际经验|  楼主 | 2022-3-27 17:03 | 只看该作者
参数2:使能外设时钟或关闭外设时钟
        ENABLE or DISABLE

使用特权

评论回复
31
结合国际经验|  楼主 | 2022-3-27 17:03 | 只看该作者
【注意】:如果用到了I/O引脚的复用功能,则还要开启其复用功能的时钟。
如GPIOC的Pin4还可以作为ADC1的输入引脚,我们把它作为ADC1来使用,
那么除了要开启GPIOC时钟外,还需要开启ADC1的时钟。

使用特权

评论回复
32
结合国际经验|  楼主 | 2022-3-27 17:04 | 只看该作者
例子:      
        RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE);
        RCC_APB2PeriphClockCmd( RCC_APB2Periph_ADC1, ENABLE);
-----------------------------------------------------------------------

使用特权

评论回复
33
结合国际经验|  楼主 | 2022-3-27 17:04 | 只看该作者
启动文件:startup_stm32f10x_hd.s

1.  ;Reset_Handler 子程序开始  芯片被复位的时候会执行  
2.  Reset_Handler   PROC      
3.         
4.   ;输出子程序 Reset_Handler 到外部文件   
5.                 EXPORT  Reset_Handler            [WEAK]   
6.   
7.  ;从外部文件中引入 main 函数   
8.            IMPORT  __main   
9.      
10.  ;从外部文件引入 SystemInit 函数                                       
11.            IMPORT  SystemInit
12.                     
13.  ;把 SystemInit 函数调用地址加载到通用寄存器 r0   
14.                  LDR     R0, =SystemInit     
15.         
16.  ;跳转到 r0 中保存的地址执行程序(调用 SystemInit 函数 用于设置系统时钟)   
17.                  BLX     R0              
18.               
19.  ;把 main 函数调用地址加载到通用寄存器 r0   
20.                  LDR     R0, =__main     
21.   
22.  ;跳转到 r0 中保存的地址执行程序(调用 main 函数)         
23.                  BX      R0   
24.                       
25.  ;Reset_Handler 子程序结束   
26.                  ENDP  

使用特权

评论回复
34
结合国际经验|  楼主 | 2022-3-27 17:05 | 只看该作者
启动代码中,它会调用SystemInit(),SysteInit()会先将与配置时钟相关的寄存器复位为默认值。
然后它再调用SetSysClock()函数:
1.  static void SetSysClock(void)   
2.  {   
3.  #ifdef SYSCLK_FREQ_HSE   
4.    SetSysClockToHSE();   
5.  #elif defined SYSCLK_FREQ_24MHz   
6.    SetSysClockTo24();   
7.  #elif defined SYSCLK_FREQ_36MHz   
8.    SetSysClockTo36();   
9.  #elif defined SYSCLK_FREQ_48MHz   
10.    SetSysClockTo48();   
11.  #elif defined SYSCLK_FREQ_56MHz   
12.    SetSysClockTo56();     
13.  #elif defined SYSCLK_FREQ_72MHz   
14.    SetSysClockTo72();                   // 配置相关寄存器
15.  #endif   
19.  }  

使用特权

评论回复
35
结合国际经验|  楼主 | 2022-3-27 17:06 | 只看该作者
SetSysClock()才是真正配置系统时钟函数,会根据宏来进行不同频率的配置。
由system_stm32f10x.c文件启用宏。
1.  #if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)   
2.  /* #define SYSCLK_FREQ_HSE    HSE_VALUE */  
3.   #define SYSCLK_FREQ_24MHz  24000000   
4.  #else   
5.  /* #define SYSCLK_FREQ_HSE    HSE_VALUE */  
6.  /* #define SYSCLK_FREQ_24MHz  24000000 */   
7.  /* #define SYSCLK_FREQ_36MHz  36000000 */  
8.  /* #define SYSCLK_FREQ_48MHz  48000000 */  
9.  /* #define SYSCLK_FREQ_56MHz  56000000 */  
10.  #define SYSCLK_FREQ_72MHz  72000000   
11.  #endif

使用特权

评论回复
36
结合国际经验|  楼主 | 2022-3-27 17:06 | 只看该作者
欢迎讨论

使用特权

评论回复
37
帛灿灿| | 2023-11-5 08:27 | 只看该作者

ESD静电保护器基本上都是通过静电进行吸收和耗散

使用特权

评论回复
38
Uriah| | 2023-11-5 09:30 | 只看该作者

这类型灌封胶一般分为A、B双组份在进行1:1的配比后再进行灌封的操作

使用特权

评论回复
39
帛灿灿| | 2023-11-5 11:26 | 只看该作者

同时把异常高压箝制在一个安全水平之内

使用特权

评论回复
40
Bblythe| | 2023-11-5 12:29 | 只看该作者

从而抑制电路的振荡。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则