首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

TM32F031-Nucleo初体验(寄存器+固件库操作LED)

TM32F031-Nucleo初体验(寄存器+固件库操作LED)

这款Nucleo板真心很小,估测了一下大约5*1.85(cm^2)的尺寸。不过麻雀虽小五脏俱全,该有的基本功能都有,只是受限于板子尺寸的问题难以集成其他高级功能。
由于本人接触STM32的时间不长,也是第一次接触到F0的板子,所以拿到板子首先看了一下社友们的帖子,学到了很多,例如CubeMX、在线Mbed编程等。查看了一下社友们的例程多以Cube库变成或者寄存器编程,所以想着自己做一个标准库的LED程序。借助网上的工程模板对LED的程序进行编写、修改后,做了LED的闪烁实验:(本人经验不足如有问题,请社友们多多指正!)
主函数代码:
/* Includes ------------------------------------------------------------------*/
#include "stm32f0xx.h"
void GPIO_InitConfig(void);
void Delay_us(__IO uint32_t nCount);
void Delay_ms(__IO uint32_t nCount);
/******************************************************************************
* Function Name   : main
* Description     : 主程序
* Input           : None
* Output         : None
* Return : None
* Attention : None
******************************************************************************/
int main(void)
{
  GPIO_InitConfig();
  while (1)
  {
  GPIO_WriteBit(GPIOB,GPIO_Pin_3,Bit_SET); //写“1”
  Delay_ms(100);
  GPIO_WriteBit(GPIOB,GPIO_Pin_3,Bit_RESET); //写“0”
  Delay_ms(100);
  //置位对应的GPIO口
  GPIO_SetBits(GPIOB,GPIO_Pin_3);
  Delay_ms(500);
  //复位对应的GPIO口
  GPIO_ResetBits(GPIOB,GPIO_Pin_3);
  Delay_ms(500);
  /*----- 寄存器操作 -----*/
  GPIOB->BSRR = (GPIO_Pin_3);//置位对应GPIO位
  Delay_ms(500);
  GPIOB->BRR = (GPIO_Pin_3);//复位对应GPIO位
  Delay_ms(100);
  }
}
/******************************************************************************
* Function Name   : GPIO_InitConfig
* Description     : GPIO配置
******************************************************************************/
void GPIO_InitConfig(void)
{
  GPIO_InitTypeDef        GPIO_InitStructure;
  /* GPIOC Periph clock enable */
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
  /* Configure PC8 and PC9 in output pushpull mode */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
}
/******************************************************************************
* Function Name   : Delay | Delay_us
* Description     : 延迟程序
* Input           : nCount: 延时长度
******************************************************************************/
void Delay(__IO uint32_t nCount)
{
  /* Decrement nCount value */
  while (nCount != 0)
  {
  nCount--;
  }
}
void Delay_us(__IO uint32_t nCount)
{
  /* 10uS延迟=>10.8uS,100uS延迟=>104uS*/
  while (nCount != 0)
  {
  nCount--;
  Delay(10);
  }
}
void Delay_ms(__IO uint32_t nCount)
{
  /* 10uS延迟=>10.8uS,100uS延迟=>104uS*/
  while (nCount != 0)
  {
  nCount--;
  Delay(11000);
  }
}
#ifdef  USE_FULL_ASSERT
void assert_failed(uint8_t* file, uint32_t line)
{
  /* User can add his own implementation to report the file name and line number,
     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  /* Infinite loop */
  while (1)
  {
  }
}
#endif
/*******************************************************************************
      END OF FILE
*******************************************************************************/
返回列表