STM32F10x笔记1:GPIO操作(基于标准库,使用keil)

第一种方式,配置寄存器 

#include "stm32f10x.h"

GPIO_InitTypeDef GPIO_InitStructure;

void delay(){
	int i = 500000;
	while(i--);
}

int main(void)
{
  /*!< At this stage the microcontroller clock setting is already configured, 
       this is done through SystemInit() function which is called from startup
       file (startup_stm32f10x_xx.s) before to branch to application main.
       To reconfigure the default setting of SystemInit() function, refer to
       system_stm32f10x.c file
     */     
       
  /* GPIOC Periph clock enable  */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);

  /* Configure PD0 and PD2 in output pushpull mode */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOC, &GPIO_InitStructure);

  /* To achieve GPIO toggling maximum frequency, the following  sequence is mandatory. 
     You can monitor PD0 or PD2 on the scope to measure the output signal. 
     If you need to fine tune this frequency, you can add more GPIO set/reset 
     cycles to minimize more the infinite loop timing.
     This code needs to be compiled with high speed optimization option.  */
  while (1)
  {
    /*
		GPIO_ResetBits(GPIOC, GPIO_Pin_13);
		delay();
		GPIO_SetBits(GPIOC, GPIO_Pin_13);
		delay();
		*/
		GPIOC->BSRR = 0x00002000;
		delay();
		GPIOC->BRR = 0x00002000;
		delay();
		GPIOC->BSRR = 0x00002000;
		delay();
		GPIOC->BRR = 0x00002000;
		delay();
		GPIOC->BSRR = 0x00002000;
		delay();
		GPIOC->BRR = 0x00002000;
		delay();

  }
}

第二种方式,调用标准库函数

#include "stm32f10x.h"

GPIO_InitTypeDef GPIO_InitStructure;

void delay(){
	int i = 500000;
	while(i--);
}

int main(void)
{
  /*!< At this stage the microcontroller clock setting is already configured, 
       this is done through SystemInit() function which is called from startup
       file (startup_stm32f10x_xx.s) before to branch to application main.
       To reconfigure the default setting of SystemInit() function, refer to
       system_stm32f10x.c file
     */     
       
  /* GPIOC Periph clock enable  */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);

  /* Configure PD0 and PD2 in output pushpull mode */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOC, &GPIO_InitStructure);

  /* To achieve GPIO toggling maximum frequency, the following  sequence is mandatory. 
     You can monitor PD0 or PD2 on the scope to measure the output signal. 
     If you need to fine tune this frequency, you can add more GPIO set/reset 
     cycles to minimize more the infinite loop timing.
     This code needs to be compiled with high speed optimization option.  */
  while (1)
  {
    
		GPIO_ResetBits(GPIOC, GPIO_Pin_13);
		delay();
		GPIO_SetBits(GPIOC, GPIO_Pin_13);
		delay();
		
		/*
		GPIOC->BSRR = 0x00002000;
		delay();
		GPIOC->BRR = 0x00002000;
		delay();
		GPIOC->BSRR = 0x00002000;
		delay();
		GPIOC->BRR = 0x00002000;
		delay();
		GPIOC->BSRR = 0x00002000;
		delay();
		GPIOC->BRR = 0x00002000;
		delay();
		*/

  }
}

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 如果您的stm32f10x项目是基于标准库构建的,而您想要使用HAL库,那么您需要按照以下步骤进行调用: 1. 通过STM32CubeMX工具配置您的MCU,并在其中勾选需要使用的HAL库驱动。 2. 将由STM32CubeMX生成的代码导入到您的项目中。 3. 然后您可以在您的代码中使用HAL库的功能和API,例如初始化GPIO、配置定时器等。 需要注意的是,由于HAL库和标准库之间的差异,您可能需要在将代码从标准库迁移到HAL库时进行一些调整。但总的来说,使用STM32CubeMX可以使调用HAL库变得更加容易和快捷。 ### 回答2: 基于标准库的ST的STM32F10x系列微控制器没有直接支持HAL库的功能。HAL库是STM32Cube软件平台提供的,它是一套面向STM32微控制器系列的硬件抽象层(Hardware Abstraction Layer)。HAL库的目的是为了简化和标准化STM32硬件的编程,并提供一致的编程接口。 要在基于标准库STM32F10x微控制器中使用HAL库,需要采取以下步骤: 1. 下载并安装STM32Cube软件包。该软件包是由STM官方提供的免费开发工具,其中包括了HAL库和一些示例代码。 2. 创建一个新的STM32工程,选择适合你的微控制器型号(例如STM32F103C8T6)。 3. 在工程中添加HAL库的文件。可以通过将库文件直接复制到工程目录下的相应文件夹中,或者通过工程属性配置来连接HAL库。 4. 在代码中包含hal库的头文件,如:`#include "stm32f1xx_hal.h"`。 5. 在main函数中初始化HAL库,如:`HAL_Init()`。 6. 设置系统时钟。HAL库的配置需要根据你的硬件设置来确定,例如设置时钟源、时钟频率等。 7. 配置外设。根据你的需求,使用HAL库提供的函数配置外设,例如GPIO、定时器、UART等。 8. 使用HAL库提供的函数操作硬件。HAL库提供了一组统一的函数来操作硬件,例如GPIO的读写、定时器的配置、UART的发送接收等。 需要注意的是,虽然HAL库对STM32F10x系列微控制器的支持有限,但是它仍然可以在基于标准库的环境中使用,并带来一些编程上的便利。但如果想享受到更多HAL库的功能和性能,建议选择更适合的STM32系列微控制器,例如STM32F4系列或STM32F7系列,它们有更强大的性能和更广泛的HAL库支持。 ### 回答3: 基于标准库stm32f10x并不直接支持HAL库,因为HAL库是针对Cube库的。然而,我们可以在使用标准库stm32f10x时模拟一些HAL库的功能。 首先,我们需要在标准库的基础上自行实现一些HAL库的功能。例如,HAL库提供了一些对外设的封装函数,我们可以根据这些函数的实现原理,自己编写标准库的外设驱动代码。 其次,HAL库提供了一些与中断处理相关的函数,我们可以使用标准库的中断处理机制来替代。标准库的中断处理机制可以使用中断优先级设置、中断使能等相关函数来实现。 另外,HAL库还提供了一些与时钟配置、GPIO配置等相关的函数,我们可以根据stm32f10x的数据手册,自己编写标准库的时钟配置和GPIO配置函数。 最后,我们可以使用标准库提供的相关函数,如读写寄存器、设置引脚状态等,来模拟HAL库的一些功能。 综上所述,基于标准库stm32f10x可以通过自行实现一些HAL库的功能来模拟调用HAL库。但需要注意的是,由于标准库和HAL库的设计理念不同,所以在使用过程中可能会有一些差异。因此,在选择使用标准库还是HAL库时,需要根据项目的需求和开发人员的习惯来决定。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值