-
谢谢分享
-
顶起!!!
-
怎么就错过了这个呢
谢谢楼主
-
可以考虑用9b96等自带的SafeRTOS啊
或者FreeRTOS如果芯片的ROM里没有SafeRTOS
省了flash空间 又有例程易于上手
-
学习了。。。
-
是呀 一个个老贵的
蓝牙开发模块(DK-EM2-2560B) 好像200美刀
WiFi开发模块(SimpleLink™ Wi-Fi® CC3000 )貌似160
ZigBee开发模块(DK-EM2-2520Z) 也得200多
-
你只是用超时中断,根本不需要GPIOPinTypeTimer()
//GPIOPinTypeTimer()试试
你的头文件很tricky 你可以copy一个9b96的官方例程到别的文件夹然后试着修改 这样会省去你很多烦恼
-
GPIOPinTypeTimer(TIMER0_BASE,TIMER_A); ??? 你这个是要做什么?你只是用定时中断没有用捕捉功能? 看看底下如何使用这个函数
GPIOPinTypeTimer(unsigned long ulPort, unsigned char ucPins);
//! \param ulPort is the base address of the GPIO port.
//! \param ucPins is the bit-packed representation of the pin(s).
-
GPIOPinTypeTimer(TIMER0_BASE,TIMER_A); ??? 你这个是要做什么?SysCtlPeripheralEnable(GPIO_PORTD_BASE); ??? 你使用PD4点亮LED, 可是怎么没有看到时能GPIO_PORTD_BASE你确定在startup.c中注册的Timer0AIntHandler没有问题? 又没有用过默认的 Timer0A_ISR( )?
-
wifi 快了。。。 :)
-
对于你说的问题 我在我的程序里进行了测试 我用80MHZ 和50MHZ 分别执行了一段代码 得到他们的执行时间不同 然后我还测试了你说的3分频和4分频 也不同。。。
LM3S9B96最高是80MHZ 至于100MHZ的问题还是期待高手来回答了? 我最高只用过80MHZ
-
(SYSCTL_SYSDIV_1 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ) ? 你是想直接用16MHZ晶振频率 还是想用分频? 你想让你的系统工作在多少频率? 你得明白这些问题。。。
你可以看看用户手册里关于系统时钟设置那一章节,再看看TI给的例子是如何设置的。底下连接是一个关于8962的系统设置,看以参考参考,
https://bbs.eeworld.com.cn/viewthread.php?tid=211433
搞明白你的系统时钟了,计算代码执行时间就会非常简单。
对于24位计数器可以总共计数16,777,216个系统时钟, 如果你的系统工作在50MHZ,相当于0.33554432秒(16,777,216*(1/50MHZ))
在搞明白系统时钟和上面的计算后,你可以定义两个变量获取不同的systick, 如果执行代码后获取的systick大于执行前,就要考虑翻转问题了。这样稍微改动程序(加上24位的systick)去计算你想要的绝对值。
-
SYSCTL_USE_PLL 要看你几分频了
ROM_SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN);
这样设置是PLL 2.5分频 200/2.5 等于80 系统工作在80MHZ
你也可以用SysCtlClockGet()来获取你的系统时钟。。。
-
ROM_SysTickPeriodSet(0xffffffff);
ROM_SysTickEnable();
temp = ROM_SysTickValueGet();
//你要测试的那段代码
temp = temp - ROM_SysTickValueGet();
(M3和M4的systick似乎都是24位递减计数器, 所以要上次的值减去现在的)
temp*1/system_clock 就是那段代码的执行时间
如果你用操作系统的话,也可以用xTaskGetTickCount()来替换ROM_SysTickValueGet()取值计算
-
在你的stellarisware\boards\dk-lm3s9b96 安装目录下就有 safertos_demo 可以参考
-
如果通信距离超过一米了 I2C显然不适合了 只能用CAN BUS
如果距离小于一米而且是片上通信 可以用I2C
I2C相对CAN BUS好开发 但是CAN BUS抗干扰能力强 速度快 。。。
希望有帮助!
-
如果你用RTOS了 会不会是你的RTOS使能了某个定时器
或者可以在初始化外设以及驱动之前 使用IntMasterDisable()
在运行系统前再使能
亦或者在你的task里再使能定时器而不是在外设初始化的时候
-
CANMessageSet()是用来定义32个报文对象中的任意一个
可以用这个函数来定义接收报文对象和发送报文对象
对于发送 需要调用这个函数来指定32个函数中的一个为发送报文对象 而且可以定义该报文对象的ID长度, ID过滤以及是否触发中断等 配置好后将这个发送报文对象放到总线上
接收端如果通过ID过滤了 可以用CANMessageGet()来获取前面发送的报文的信息
“是不是每次需要向总线发送数据的时候只能够用CANMessageSet()函数呢?” --- 我觉得是的 不然你就得自己一个个操作CAN的寄存器把报文发送出去
-
TI的 IEC60730 application note 里有flash CRC校验的算法
你可以下载解压后看看test_flash.c以及 sw01272.c
http://www.ti.com/mcu/docs/litab ... yId=1&familyId=1755
下载解压后把这个文件夹放到你的 StellarisWare目录底下就可以调用test_flash.c里的函数了
-
你是在bootloader里做应用程序的校验和么?