在线时间63 小时
UID132190
注册时间2009-6-1
NXP金币3
TA的每日心情 | 慵懒 2020-2-14 09:42 |
---|
签到天数: 196 天 [LV.7]常住居民III
高级会员
- 积分
- 695
- 最后登录
- 2024-1-24
|
本帖最后由 sagitattoo 于 2016-7-6 23:34 编辑
1、小车的组装
小车的组装没有什么好说的,只需要一把螺丝刀,配上详细的DIY说明书,分分钟搞定。
2、开放环境的搭建
工欲善其事必先利其器,我这里选择的开放路径是:Kinetis SDK + Keil 5.14 。
通过Kinetis SDK,可以快速方便的对K64F开发板进行启动配置,并且为板上硬件及接口提供了便捷的操作方法,大大缩短的开发周期和难度。
下图为基于SDK的基本程序结构:
“startup”为MK64F12的启动文件;
“drivers”为MK64F12外设驱动;
“source”为应用程序入口;
“board”为板上资源驱动;
“utilities”为一些与硬件无关的软件功能。
3、蓝牙模块测试
蓝牙作为一种无线接入模式,因其种种优点受到各方面的追捧。受益于电子电路高度集成的成果,对于蓝牙的开发,已经可以集成到一个模块中,这个模块将复杂的蓝牙数据交换过程封装成简单的串口输入输出交互。
K64F开发板专门为JY-MCU蓝牙模块预留了4个接口,其实也就是2个电源接口和一对串口。根据原理图,这对串口接到K64F12的UART 4模块。
手头没有电烙铁,只能将蓝牙模块用胶带固定。别看简陋,信号连接还不错。
测试流程,当通过手机蓝牙发出“r”时,板上LED显示红色;“b”时,显示蓝色;“g”时,显示绿色。
主要测试代码如下:
在pin_mux.c的BOARD_InitPins()函数中,使能PortB、PortC和PortE的时钟,并将PC14、PC15设置为第三复用功能,将PB21、PB22和PB26设为GPIO。
- void BOARD_InitPins(void)
- {
- CLOCK_EnableClock(kCLOCK_PortB);
- CLOCK_EnableClock(kCLOCK_PortC);
- CLOCK_EnableClock(kCLOCK_PortE);
-
- PORT_SetPinMux(PORTC, 14U, kPORT_MuxAlt3);
- PORT_SetPinMux(PORTC, 15U, kPORT_MuxAlt3);
- PORT_SetPinMux(PORTB, 21U, kPORT_MuxAsGpio);
- PORT_SetPinMux(PORTB, 22U, kPORT_MuxAsGpio);
- PORT_SetPinMux(PORTE, 26U, kPORT_MuxAsGpio);
- }
复制代码 在uart_polling_transfer.c的main函数中,初始化UART 4,并通过polling(查询)的方法,判断蓝牙模块接收到的字符,并反映到板上的RGB LED上。
- int main(void)
- {
- uint8_t ch;
- uart_config_t config;
- gpio_pin_config_t led_config ={
- kGPIO_DigitalOutput, 0,
- };
-
- BOARD_InitPins();
- BOARD_BootClockRUN();
- GPIO_PinInit(BOARD_LED_RED_GPIO,BOARD_LED_RED_GPIO_PIN,&led_config);
- GPIO_PinInit(BOARD_LED_BLUE_GPIO,BOARD_LED_BLUE_GPIO_PIN,&led_config);
- GPIO_PinInit(BOARD_LED_GREEN_GPIO,BOARD_LED_GREEN_GPIO_PIN,&led_config);
-
- UART_GetDefaultConfig(&config);
- config.baudRate_Bps = BOARD_DEBUG_UART_BAUDRATE;
- config.enableTx = true;
- config.enableRx = true;
- UART_Init(UART4, &config, CLOCK_GetFreq(UART4_CLK_SRC));
- while (1)
- {
- UART_ReadBlocking(UART4, &ch, 1);
- if(ch == 'r')
- {
- GPIO_WritePinOutput(BOARD_LED_RED_GPIO,BOARD_LED_RED_GPIO_PIN,0);
- GPIO_WritePinOutput(BOARD_LED_BLUE_GPIO,BOARD_LED_BLUE_GPIO_PIN,1);
- GPIO_WritePinOutput(BOARD_LED_GREEN_GPIO,BOARD_LED_GREEN_GPIO_PIN,1);
- }
- else if(ch == 'b')
- {
- GPIO_WritePinOutput(BOARD_LED_RED_GPIO,BOARD_LED_RED_GPIO_PIN,1);
- GPIO_WritePinOutput(BOARD_LED_BLUE_GPIO,BOARD_LED_BLUE_GPIO_PIN,0);
- GPIO_WritePinOutput(BOARD_LED_GREEN_GPIO,BOARD_LED_GREEN_GPIO_PIN,1);
- }
- else if(ch == 'g')
- {
- GPIO_WritePinOutput(BOARD_LED_RED_GPIO,BOARD_LED_RED_GPIO_PIN,1);
- GPIO_WritePinOutput(BOARD_LED_BLUE_GPIO,BOARD_LED_BLUE_GPIO_PIN,1);
- GPIO_WritePinOutput(BOARD_LED_GREEN_GPIO,BOARD_LED_GREEN_GPIO_PIN,0);
- }
- else
- {
- GPIO_WritePinOutput(BOARD_LED_RED_GPIO,BOARD_LED_RED_GPIO_PIN,0);
- GPIO_WritePinOutput(BOARD_LED_BLUE_GPIO,BOARD_LED_BLUE_GPIO_PIN,0);
- GPIO_WritePinOutput(BOARD_LED_GREEN_GPIO,BOARD_LED_GREEN_GPIO_PIN,0);
- }
- }
- }
复制代码 通过此测试,完成了对手机控制到开发板做出反应的信号链路测试,为下一步中控制小车电机打下基础。
购买的电机驱动和电池还没有到货,期待ing。
附件是蓝牙测试工程。
|
|