3252|3

23

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

把JTAG复用为GPIO [复制链接]

个人参考资料写的关于把JTAG复用为普通I/O口的小程序;测试通过。。。

芯片为LM3S9B92,望高手指正、、、

 

 

#include "hw_ints.h"
#include "hw_memmap.h"
#include "hw_types.h"
#include "gpio.h"
#include "sysctl.h"
#include "interrupt.h"
#include "systick.h"

#define SHUPORT GPIO_PORTC_BASE
#define SHU 0xff
#define GPIOCLOCK (*(volatile unsigned long *)(GPIO_PORTC_BASE+0X520))
#define GPIOCCR (*(volatile unsigned long *)(GPIO_PORTC_BASE+0X524))
#define GPIOCAFSEL (*(volatile unsigned long *)(GPIO_PORTC_BASE+0X420))

int shuzi[16]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X77,0X7C,0X58,0X5E,0X79,0X71};
int i,j=0;


void unlock(void)
{
 GPIOCLOCK=0X4C4F434B; //解锁  0X1ACCE551
 GPIOCCR=0XFF;   //设置相应位为1,允许更改
 GPIOPadConfigSet(SHUPORT,SHU,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD);//配置管脚驱动;
 GPIODirModeSet(SHUPORT,SHU,GPIO_DIR_MODE_OUT);//设置管脚输出
 GPIOCLOCK=0X00;     //锁定
}

void lock(void)
{
 GPIOCLOCK=0X4C4F434B;
 GPIOCCR=0XFF;
 GPIODirModeSet(SHUPORT,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,GPIO_DIR_MODE_HW);//设置管脚输出
 GPIOPadConfigSet(SHUPORT,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU);//配置管脚驱动;
 GPIOCCR=0XF0;
 GPIOCLOCK=0X00;
}

void portectjtag(void)    //JTAG保护
{
 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);//使能外设GPIOB;
 GPIOPadConfigSet(GPIO_PORTB_BASE,GPIO_PIN_4,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD);//配置管脚驱动
 GPIODirModeSet(GPIO_PORTB_BASE,GPIO_PIN_4,GPIO_DIR_MODE_IN);//配置管脚为输出
 while(GPIOPinRead(GPIO_PORTB_BASE,GPIO_PIN_4)==0)  //按下w21,程序不往下执行
 {for(;;);}
}
int main(void)
{
 portectjtag();
 SysCtlClockSet(SYSCTL_SYSDIV_1|SYSCTL_USE_OSC|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ);//配置系统时钟
 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);//使能外设GPIOC
 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);//使能外设GPIOE
 unlock();
 GPIOPadConfigSet(SHUPORT,SHU,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD);//配置管脚驱动
 GPIOPadConfigSet(GPIO_PORTE_BASE,GPIO_PIN_7,GPIO_STRENGTH_4MA,GPIO_PIN_TYPE_STD);//配置管脚驱动
 GPIODirModeSet(SHUPORT,SHU,GPIO_DIR_MODE_OUT);//设置管脚输出
 GPIODirModeSet(GPIO_PORTE_BASE,GPIO_PIN_7,GPIO_DIR_MODE_OUT);//设置管脚输出
 GPIOPinWrite(GPIO_PORTE_BASE,GPIO_PIN_7,0X00);//输出低电平
 IntMasterEnable();//中断使能
 SysTickPeriodSet(16000000);//设置定时周期为0.5s,16M
 SysTickEnable();//使能系统定时器
 SysTickIntEnable();//使能系统定时器中断
 while(1)
 {
  GPIOPinWrite(SHUPORT,SHU,shuzi[ i ]);//输出数字(数码管)
 };
}

void SysTick(void)//中断子程序,注意修改Startup.s文件的相关项
{
 i++;
 if(i>=16){i=0;j++;}
 if(j>1)lock();
 if(j>=10)j=0;
}

 

 

特别提醒,一定要添加保护JTAG的函数。。。
[ 本帖最后由 olympicjun 于 2012-4-26 17:00 编辑 ]

JTAG.rar

62.4 KB, 下载次数: 28

最新回复

谢谢楼主  详情 回复 发表于 2012-5-20 20:18
 
点赞 关注

回复
举报

1

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
谢谢分享
 
 

回复

2002

帖子

24

TA的资源

五彩晶圆(高级)

板凳
 
最好封装好放到初始化函数里一起调用,否则大意忘记了就是悲剧的开始
 
 
 

回复

194

帖子

0

TA的资源

一粒金砂(高级)

4
 
谢谢楼主
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表