红牛开发板非固件库控制led

红牛开发板非固件库控制led

ID:9097515

大小:36.50 KB

页数:2页

时间:2018-04-17

红牛开发板非固件库控制led_第1页
红牛开发板非固件库控制led_第2页
资源描述:

《红牛开发板非固件库控制led》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、STM32红牛开发板非固件库控制LED―――10/05/23摘要STM32红牛开发板上的5个LED,接在GPIOF6~10脚,输出低电平时,LED亮。这样我们设置GPIOF的相关寄存器,让其输出低电平就可以让LED亮。因为没有用到ST提供的固件库,所以是直接对寄存器的内存地址读写,即对一个指向该地址的指针变量进行读写。并且该变量必须为易变型的,即用volatile定义,这样是为了告诉编译器不要去优化这个变量,导致其它一些寄存器的数据变化。GPIOx是挂载在APB2高速外设总线上的,最大频率是72MHZ,所以我们除了了打开HSE(外部高速时钟)并关闭内部高速时钟(开机默认选

2、择了HSI)外,还要打开APB2总线的时钟。一、寄存器地址映射外设的基址PERIPH_BASE为0x40000000,APB1外设在前面,所以基址APB1PERIPH_BASE等于PERIPH_BASE,APB2外设基址APB2PERIPH_BASE为PERIPH_BASE+0x10000,最后AHB基址是PERIPH_BASE+0x20000.GPIOx是挂载在APB2总线了的,从(APB2PERIPH_BASE+0x0800)开始,每0x400字节空间为一组IO口的寄存器。所以GPIOF_BASE为(APB2PERIPH_BASE+0x1C00)。结合芯片手册,GPI

3、OF各寄存器地址如下:/***********GPIOF外设寄存器地址映射********************/#defineGPIOF_CRL(*(volatileunsignedlong*)(GPIOF_BASE+0x00))#defineGPIOF_CRH(*(volatileunsignedlong*)(GPIOF_BASE+0x04))#defineGPIOF_IDR(*(volatileunsignedlong*)(GPIOF_BASE+0x08))#defineGPIOF_ODR(*(volatileunsignedlong*)(GPIOF_BASE+0

4、x0C))#defineGPIOF_BSRR(*(volatileunsignedlong*)(GPIOF_BASE+0x10))#defineGPIOF_BRR(*(volatileunsignedlong*)(GPIOF_BASE+0x14))#defineGPIOF_LCKR(*(volatileunsignedlong*)(GPIOF_BASE+0x18))时钟控制寄存器基址RCC_BASE为(AHBPERIPH_BASE+0x1000),由同样方法可以得出RCC各寄存器地址如下:/****************RCC寄存器地址映射***************

5、****/#defineRCC_CR(*(volatileunsignedlong*)(RCC_BASE+0x00))#defineRCC_CFGR(*(volatileunsignedlong*)(RCC_BASE+0x04))#defineRCC_CIR(*(volatileunsignedlong*)(RCC_BASE+0x08))#defineRCC_APB2RSTR(*(volatileunsignedlong*)(RCC_BASE+0x0C))#defineRCC_APB1RSTR(*(volatileunsignedlong*)(RCC_BASE+0x10)

6、)#defineRCC_AHBENR(*(volatileunsignedlong*)(RCC_BASE+0x14))#defineRCC_APB2ENR(*(volatileunsignedlong*)(RCC_BASE+0x18))#defineRCC_APB1ENR(*(volatileunsignedlong*)(RCC_BASE+0x1C))#defineRCC_BDCR(*(volatileunsignedlong*)(RCC_BASE+0x20))#defineRCC_CSR(*(volatileunsignedlong*)(RCC_BASE+0x24))至

7、此,得到上面数据,对这些寄存器操作,我们就可以控制红牛开板的上的5个LED了。一、程序编写1、启动代码启动代码直接使用ST提供的默认启动代码,由于我的开发板是大容量FLASH的STM32F103ZET6,所以用的启动代码是startup_stm32f10x_hd.s。2、时钟配置RCC_Configuration跳转到MAIN函数后,程序第一件要做的事情就是配置系统时钟。由HSE直接作为系统时钟。VoidRCC_Configuration(){RCC_CR

8、=(1<<16);//HSE振荡器开启RCC_CR&=~(1<<0);

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。