-
用 Kiel for arm 5.5
-
EK-tm4c123gxl板子自带仿真,你可以去下载keil for arm 5.5 破解文件可以用4.7版本的破解文件。资料可以去这里下,我有上传常用资料https://bbs.eeworld.com.cn/thread-441833-1-1.html
-
http://www.deyisupport.com/quest ... /153852.aspx#153852这个网站有说明
-
是不是芯片锁了,解锁下。
-
下载来看看!!
-
比如79.8/20这个除法,如果启动了FPU(浮点运算)编译器就会编译成几句汇编。如果没有启动。它会编译成100多句汇编。这样就大大的提高了运算速度!
-
http://www.deyisupport.com/quest ... 06/61153.aspx#61153
使用方法!
-
430内部有ADC啊,外接多麻烦。
-
mark一下。3Q
-
你可以看下,
-
//PE4_M1PWM2 PE5_M1PWM3 Period=50000 Duty0=Duty1=5000.频率为50HZ占空比为20%
void mypwm0_Configuration(uint32_t Period, uint32_t Duty0,uint32_t Duty1)
{
// Set the PWM clock to the system clock.80M/32=2.5M
SysCtlPWMClockSet(SYSCTL_PWMDIV_32);
// Enable the GPIO Peripheral used by the PWM1
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
// Enable PWM1
SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM1);
// Configure GPIO Pins for PWM1 mode.
GPIOPinConfigure(GPIO_PE4_M1PWM2);
GPIOPinConfigure(GPIO_PE5_M1PWM3);
GPIOPinTypePWM(GPIO_PORTE_BASE, GPIO_PIN_4);
GPIOPinTypePWM(GPIO_PORTE_BASE, GPIO_PIN_5);
PWMGenConfigure(PWM1_BASE, PWM_GEN_1, PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);
// Period=(1 / f) * SysClk
PWMGenPeriodSet(PWM1_BASE, PWM_GEN_1, Period);
PWMPulseWidthSet(PWM1_BASE, PWM_OUT_2, Duty0);
PWMPulseWidthSet(PWM1_BASE, PWM_OUT_3, Duty1);
// Enable the PWM1 Bit 2 (PE4)
PWMOutputState(PWM1_BASE, PWM_OUT_2_BIT, true);
PWMOutputState(PWM1_BASE, PWM_OUT_3_BIT, true);
// Enables the counter for a PWM generator block.
PWMGenEnable(PWM1_BASE, PWM_GEN_1);
}
//PD0_M0PWM6 PD1_M0PWM7 Period=50000 Duty2=Duty3=5000.频率为50HZ占空比为20%
void mypwm1_Configuration(uint32_t Period, uint32_t Duty2,uint32_t Duty3)
{
// Set the PWM clock to the system clock.80M/32=2.5M
SysCtlPWMClockSet(SYSCTL_PWMDIV_32);
// Enable the GPIO Peripheral used by the PWM0
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
// Enable PWM0
SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);
// Configure GPIO Pins for PWM0 mode.
GPIOPinConfigure(GPIO_PD0_M0PWM6);
GPIOPinConfigure(GPIO_PD1_M0PWM7);
GPIOPinTypePWM(GPIO_PORTD_BASE, GPIO_PIN_0);
GPIOPinTypePWM(GPIO_PORTD_BASE, GPIO_PIN_1);
PWMGenConfigure(PWM0_BASE, PWM_GEN_3, PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);
// Period=(1 / f) * SysClk
PWMGenPeriodSet(PWM0_BASE, PWM_GEN_3, Period);
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_6, Duty2);
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_7, Duty3);
// Enable the PWM0 Bit 6 (PD0)
PWMOutputState(PWM0_BASE, PWM_OUT_6_BIT, true);
PWMOutputState(PWM0_BASE, PWM_OUT_7_BIT, true);
// Enables the counter for a PWM generator block.
PWMGenEnable(PWM0_BASE, PWM_GEN_3);
}
-
本帖最后由 ZhengLang 于 2014-7-20 21:23 编辑
void Ultrasonic_Init(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER1);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
GPIOPinConfigure(GPIO_PB4_T1CCP0);
GPIOPadConfigSet(GPIO_PORTB_BASE,GPIO_PIN_4,GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
GPIOPinTypeTimer(GPIO_PORTB_BASE,GPIO_PIN_4);
//
TimerClockSourceSet(TIMER1_BASE,TIMER_CLOCK_SYSTEM);
//
TimerConfigure(TIMER1_BASE, TIMER_CFG_SPLIT_PAIR|TIMER_CFG_A_CAP_TIME_UP);
TimerControlEvent(TIMER1_BASE, TIMER_A, TIMER_EVENT_BOTH_EDGES);
TimerIntEnable(TIMER1_BASE, TIMER_CAPA_EVENT);
IntEnable(INT_TIMER1A);
TimerEnable(TIMER1_BASE, TIMER_A );
}
flagX是用来判断是上升沿还是下降沿
void TIMER1A_Handler(void)
{
TimerIntClear(TIMER1_BASE,TIMER_CAPA_EVENT);
flagX++;
if(flagX==2)
StartX=TimerValueGet(TIMER1_BASE,TIMER_A);
if(flagX ==3)
{
EndX=TimerValueGet(TIMER1_BASE,TIMER_A);
flagX=1;
}
}
这个函数用来得到高低电平之间的脉冲数
float UltrasonicValueGet(void)
{
if(EndXStartX)
{Distance = EndX-StartX;}
}
由于我这个程序高电平时间脉冲数少于0xffffff.所有最多有一次从最高到最低的跳变。如果高电平时间比较长。程序要修改下
-
不加的话虽然编译器提示错误。但是可以编译连接的。功能可以正常使用!
-
// Set the system clock to 80MHz.
SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);这个是设置时钟频率到80M.我没有用你SystemInit()函数。我也不知道拿来干什么的!
-
这个附件减压出来有2个文件。你添加进入工程就好了!里面已经把所有的中断都声明好了。用建工程时的启动文件没有定义中断需要自己定义!!
-
你不用配置参考源(不用管它),ADC模块默认使用3.3V的参考源、当然,如果你外接参考源就需要配置下。
-
衰人飞 发表于 2014-7-19 20:58
好吧,,找到问题了。。and SysClk is the system clock frequency.被这句话误导。 我以为不能在PWM周期分 ...
可以用定时器去造PWM波啊。定时器那个模块你们有PWM输出的设置!!
-
zgbkdlm 发表于 2014-7-19 21:28
PWMGenPeriodSet(uint32_t ui32Base,
uint32_t ui32Gen,
uint32_t ui32Period)
大于65535会出现意想不到的的错误。
-
SysCtlPeripheralEnable();直接调用这个就可以了。你为什么非要操作寄存器勒。不用纠结于此
-
azhiking 发表于 2014-7-14 18:15
解锁一下试试看
怎么解锁??