换了块LM4F120的板子,来个点灯程序,有坑
[复制链接]
开发板样子我就不发了,坛友发过的,
来个环境安装及点灯程序
首先,LM4F120在我安装的Keil4.74中找不到这个芯片,只有TM4C123的,实际上选这个也能正常运行下载,
后来还是装了个Keil 5.21,默认安装是不含任何芯片库的,要下载包
然后第一步,下载包,LM4F1XX的包,见图
安装,之后新建工程,选择对应的芯片后,选择运行环境配置
如图,勾上,下载
配置之后的文件结构如图所示,
这几个是必须的了,最精简的
再之后,写代码,如图
当然这个也有一个非常大的坑,造成一下载,就死机
调试发现一直在异常位置死循环
FaultISR B FaultISR 此处,死循环。 找了好久原因没找到, 后来在官方找个例程发现没事, 找了2小时,终于发现用KEIL5新建的工程默认的RAM地址不对,这个BUG不应该啊。
RAM地址错误 手册中定义为如图所示:0x2000.0000 但默认工程却为0x1000000
手册中说明
另外此处也要改
然后下载终于正常亮灯了, 不容易
点灯代码: 正文: 点灯代码(三色灯循环亮,一秒亮一个)
#include "lm4f120h5qr.h" #include "stdint.h" //PF 1,2,3 rbg灯 //pf0 sw2,pf4 sw1 uint32_t count=0; uint32_t led_index=0; int main(void){ //PORTF端口时钟启用 SYSCTL_RCGCGPIO_R|=(1<<5); //IO启用数字模式 PF1,2,3 GPIO_PORTF_DEN_R|=(1<<1)|(1<<2)|(1<<3); //设置为输出模式 GPIO_PORTF_DIR_R|=(1<<1)|(1<<2)|(1<<3); //SYSTICK重载定时器 NVIC_ST_RELOAD_R=16000000/1000-1; //SYSTICK定时器 启用,开中断,使用系统时钟 NVIC_ST_CTRL_R=(1<<0)|(1<<1)|(1<<2); //IO数据输出 红灯亮 GPIO_PORTF_DATA_R=1<<1; while(1); } void SysTick_Handler(){ count++; if(count==1000){ count=0; led_index++; if(led_index>=3) led_index=0; //三个IO清零 GPIO_PORTF_DATA_R&=(~(1<<1))&(~(1<<2))&(~(1<<3)); //亮LED灯,依次亮 GPIO_PORTF_DATA_R|=1<<(led_index+1); } } //end
复制代码
|