你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F030 Nucleo64开发板测评之:点亮你的LED

[复制链接]
黑夜之狼 发布时间:2016-11-21 10:05
本帖最后由 黑夜之狼 于 2016-11-21 10:05 编辑

闲来无事,翻箱看到了这块板子,之前没玩过M0,现在来好好玩下,有板子的朋友可以一起指导交流!

首先打开ST的选型手册,看看板载的主控芯片STM32F030R8到底有多牛叉先
STM32F030R8外设资源.png

64KFlash,8K的RAM,16*12bit的ADC,SPI、I2C、USART各2路,在JLC上查过,售价5个大洋左右,性价比还算不错,20个引脚的做到两块多....(这会不会和STM8有冲突)

板子的照片就不发了,和大多数的Nucleo板一样,那就直奔主题,来点灯吧!

点灯前,养成一个好习惯-使能外设的时钟(在这点上,很多初学者可能多数都是从51过来,都是犯了这个错误)
既然有了时钟这个概念,那么这个时钟怎么来的,到底有快呢?
我们先看看时钟树(参考手册P90 Figure 10)
STM32F030R8的时钟树.png
通过上面的时钟树,我们一共有三种不同的时钟源
1.内部8MHz RC时钟
2.外部RC时钟(可接4-32MHz晶振)
3.内部锁相环PLL时钟
由于STM32F030 Nucleo64这块开发板只留了HSE接口,焊接了LSE,我也懒得找晶振焊接上去,往后的实验会用HSI/2经过PLL,12倍频到48MHz给系统时钟(已经是这颗芯片最高时钟频率了!)
既然要用PLL,那么我们打开参考手册P94,看看PLL是如何配置的:
PLL配置步骤.png
贴上代码:
  1. void SystemClock_Config(void)
  2. {      
  3.     RCC_DeInit();                                           //将外设 RCC寄存器重设为缺省值  
  4.    
  5.     RCC_HSICmd(ENABLE);                                     //使能HSI  
  6.     while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);     //等待HSI使能成功
  7.     RCC_PLLCmd(DISABLE);                                    //禁止PLL
  8.     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == SET);       //等待PLL禁止成功
  9.     RCC_HCLKConfig(RCC_SYSCLK_Div1);                        //AHB clock = SYSCLK
  10.     RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_12);   //PLL时钟来源HSI二分频,再12倍频,得出48MHz
  11.     RCC_PLLCmd(ENABLE);                                     //使能PLL
  12.     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);     //等待PLL使能成功
  13.     RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);              //设置PLL为系统时钟
  14.     while(RCC_GetSYSCLKSource() != 0x08);
  15. }
复制代码
那么时钟的配置就完成了,回到之前所讲的使能外设时钟。
GPIO是挂在在AHB这个时钟总线上的,对GPIO的时钟使能,我们可以通过RCC_AHBPeriphClockCmd()这个库函数来实现,代码如下:
  1. RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); //使能PA端口时钟
复制代码
板子上只有LD2才可以控制,是挂在PA5上,而配置GPIO的步骤如下:
1.选择配置的端口
2.选择控制模式
3.GPIO的速率

实现代码如下:
  1. /*
  2.     LED2<----->PA5
  3. */          
  4. //LED IO初始化
  5. void LED_Init(void)
  6. {
  7.         GPIO_InitTypeDef  GPIO_InitStructure;
  8.        
  9.         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); //使能PA端口时钟
  10.        
  11.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;           //LED0-->PA.5 端口配置
  12.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  13.     GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      //推挽输出
  14.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   //IO口速度为50MHz
  15.         GPIO_Init(GPIOA, &GPIO_InitStructure);                            //根据设定参数初始化GPIOA.5
  16.         GPIO_ResetBits(GPIOA, GPIO_Pin_5);                                    //PA.5 输出低电平
  17. }
复制代码
到了这里就完成点灯这个步骤,如果让LED闪烁起来,那写一个简单的delay即可,我们这里顺带把Cortex-M0内核的嘀嗒定时器玩起来,让这个定时器完成delay功能,具体代码可参考官方例程,这里就不具体描述了






评分

参与人数 1 ST金币 +20 收起 理由
zero99 + 20

查看全部评分

收藏 1 评论19 发布时间:2016-11-21 10:05

举报

19个回答
黑夜之狼 回答时间:2016-11-21 10:06:57
上传工程代码:
STM32F030_LED.rar (1.52 MB, 下载次数: 121)
zero99 回答时间:2016-11-21 13:17:12
感谢黑夜之狼分享
peter001 回答时间:2016-11-21 13:19:09
谢谢分享
黑夜之狼 回答时间:2016-11-21 13:44:02
zero99 发表于 2016-11-21 13:17
感谢黑夜之狼分享

感谢管理员和各位的支持,本人文笔实在一般,如果有错误的地方,还麻烦各位提出来,多多指导!
czhuanqilai 回答时间:2017-11-22 17:33:10
楼主,你好,我的手机号是13593144899.。积分不够,不能私信你,所以只好这样了,希望你能看到。。。  
czhuanqilai 回答时间:2017-11-22 17:33:29
楼主,你好,我的手机号是13593144899.。积分不够,不能私信你,所以只好这样了,希望你能看到。
czhuanqilai 回答时间:2017-11-22 17:43:35
前几天刚拿到板, 看了网上的一些资料,ST驱动en.stsw-link009也配置了,但不知道驱动安装成功没,不知道在线调试什么东东
黑夜之狼 回答时间:2017-11-22 19:55:46
czhuanqilai 发表于 2017-11-22 17:43
前几天刚拿到板, 看了网上的一些资料,ST驱动en.stsw-link009也配置了,但不知道驱动安装成功没,不知道在 ...

把板子连接到电脑上,看能不能读出驱动来
czhuanqilai 回答时间:2017-11-22 21:24:37
黑夜之狼 发表于 2017-11-22 19:55
把板子连接到电脑上,看能不能读出驱动来

第一次连接板子与电脑 就显示一个 设备  ST-Link Debug   
安装完驱动之后什么也读不出来
12下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版