芯查查logo
  • 数据服务
    1. 新产品
    2. 物料选型
    3. 查替代
    4. 丝印反查
    5. 查品牌
    6. PCN/PDN
    7. 查方案
    8. 查代理
    9. 数据合作
  • SaaS/方案
      SaaS产品
    1. 供应链波动监控
    2. 半导体产业链地图
    3. BOM管理
    4. 解决方案
    5. 汽车电子
    6. 政府机构
    7. 数据API
  • 商城
  • 行业资讯
    1. 资讯
    2. 直播
  • 论坛社区
    1. 论坛
    2. 学习
    3. 测评中心
    4. 活动中心
    5. 积分商城
  • 查一下
  • 开通会员
聪聪哥哥
【星允派 NEBULA PI】02:cubeMX软件建立工程

前言:介绍使用STM32 cubeMX软件建立工程,实现基本GPIO操作。

一:打开STM32 cube MX软件,新建工程项目,这里我们直接点击图示的按键即可。

1.2选择本款开发板的芯片类型 :STM32F103VE

选择好芯片之后,直接开启工程文件就可以了。

1.3 由于板载了DAP-link的调试器,这里我们需要把芯片的调试功能打开,将PA13,PA14设置成调试口,否则当我们下载工程之后,由于没有使能芯片的调试功能,无法进行二次工程的下载,如下所示:

1.4 查看原理图得知:开发板集成外外部8Mhz的晶振和32.767khz的RTC晶振,所以这里我们就直接使用外部晶振作为项目的时钟来源。

1.5 中断向量的配置:STM32cube MX软件默认配置的是4组向量分组,这里我修改成为了2组向量的,具有响应优先级和抢占优先级的区别,其实作为选择芯片的外设来说,这两个的区别不大。

1.6 时钟树的配置:

为了更好的体现芯片的性能,这里我是将PLL时钟配置成72Mhz,这里APB1 APB2的时钟都会是72MHZ,更好的体现芯片的性能

1.7 工程创建时,需要注意的地方:

主要是将配置的外设模块,单独配置成一个.C和.h文件,这样使工程更加的简洁。

二:定时器实现GPIO口的操作。

2.1 这里我使用定时器6,作为系统的基本时钟:

   定时器是cpu的一个不可或缺的外部定时器,由于定时器的功能比较多,真正学会定时器的运用还是需要花费一定的时间、精力的。记得当初自己刚刚接触定时器的时候,学到32定时器的时候,对自己的打击非常大,当时都想要放弃了,主要是这一部分的知识复杂太多了,不过现在我们使用STM32cube来学习32架构,比之前要方便很多了,之前的基本的使用标准库学习,出现了问题也不知道该如何解决,这里和大家分享一下,定时器的学习经历。

      这次先和大家分享STM32定时器的原理、寄存器介绍、定时器配置,定时器的几个常用的功能(如定时器中断、定时器输出比较PWM波形、定时器输入捕获、定时器编码器模式应用等)在以后得章节中和大家分享。

2.2 软件编写过程:

1:使能定时器时钟。

2:初始化定时器,配置ARR,PSC。

3:开启定时器中断,配置NVIC。

4:使能定时器。

5: 编写中断服务函数。

2.3 STM32cube MX软件的配置:

如上所示:在定时器6 每1ms进入中断一次。

2.4 代码如下所示:

void MX_TIM6_Init(void)
{

  /* USER CODE BEGIN TIM6_Init 0 */

  /* USER CODE END TIM6_Init 0 */

  TIM_MasterConfigTypeDef sMasterConfig = {0};

  /* USER CODE BEGIN TIM6_Init 1 */

  /* USER CODE END TIM6_Init 1 */
  htim6.Instance = TIM6;
  htim6.Init.Prescaler = 999;
  htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim6.Init.Period = 71;
  htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
  if (HAL_TIM_Base_Init(&htim6) != HAL_OK)
  {
    Error_Handler();
  }
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN TIM6_Init 2 */
	HAL_TIM_Base_Start_IT(&htim6); 
  /* USER CODE END TIM6_Init 2 */

}

添加定时器的回调函数,在内部实现对板载LED的简单操作。

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  /* USER CODE BEGIN Callback 0 */

  /* USER CODE END Callback 0 */

  /* USER CODE BEGIN Callback 1 */
  if (htim->Instance == TIM6) 
  {
		Time6point++ ;
		if(Time6point %1000 == 0)
  {
     Time6point = 0 ;
//		HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_4); 
		HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_6); 
		HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_3); 
 //HAL_UART_Transmit(&huart1, RecBuffer1, 10, 0xffff); 
  }
	}
}

三:下载之后,实物测试图如下所示:

 

 

 

 

 

 

 

申请原创奖励
版块: 单片机/MCU论坛
前5天 19:26
  • 举报
😁😂😃😄😅😆😉😊😋😌😍😏😒😓😔😖😘😚😜😝😞😠😡😢😣😤😥😨😩😪😫😭😰😱😲😳😵😷😸😹😺😻😼😽😾😿🙀🙅🙆🙇🙈🙉🙊🙋🙌🙍🙎🙏✂✅✈✉✊✋✌✏✒✔✖✨✳✴❄❇❌❎❓❔❕❗❤➕➖➗➡➰🚀🚃🚄🚅🚇🚉🚌🚏🚑🚒🚓🚕🚗🚙🚚🚢🚤🚥🚧🚨🚩🚪🚫🚬🚭🚲🚶🚹🚺🚻🚼🚽🚾🛀Ⓜ🅰🅱🅾🅿🆎🆑🆒🆓🆔🆕
@好友

全部评论

加载中
游客登录通知
已选择 0 人
自定义圈子
移动
发布帖子
发布动态
发布问答
最新帖子
【星允派 NEBULA PI】10:cube实现文件系统操作【星允派 NEBULA PI】09:USB虚拟CDC与串口1【星允派 NEBULA PI】08硬件SPI驱动W25Q64【星允派 NEBULA PI】07:IIC驱动24C02【星允派 NEBULA PI】05:调试外部中断
热门版块
查看更多
问型号
问技术
问行情
电子DIY
汽车电子工程师论坛
工业电子专区
新手入门指南
单片机/MCU论坛
PCB设计
开源项目

8

收藏

分享

微信扫码
分享给好友

评论