好记性不如烂笔头,既然不够聪明,就乖乖的做笔记,温故而知新。
WICED Studio是Cypress继承自Broadcom的开发环境,适用于cypress收购broadcom IOT的单芯片开发;当然现在cypress已经发布了整合PSoc Creator和WICED的全新开发环境Modus Toolbox.以后再讲Modus Toolbox。
如果你用过eclipse或者居于eclipse开发而来的IDE,那么你是用WICED Studio没有任何压力,WICED Studio也是在eclipse基础上开发而来。作为一款功能强大并且开源的软件,很多厂商的IDE都是在它的基础上开发而来,例如英飞凌的 DAVA、Dialog的 SmartSnippets Studio等;
目前WICED6.2自带CYW20706/CYW20719/CYW20735等芯片的SDK
以"app/snip/hal/gpio"为例:
很多MCU工程师习惯了找"main",用WICED的话别找了,找不到,WICED的main函数放在底层;
APPLICATION_START( )
{
wiced_set_debug_uart( WICED_ROUTE_DEBUG_TO_PUART );
wiced_hal_puart_select_uart_pads( WICED_PUART_RXD, WICED_PUART_TXD, 0, 0);
WICED_BT_TRACE( "GPIO application start\n\r" );
wiced_bt_stack_init( sample_gpio_app_management_cback,NULL,NULL);
}
APPLICATION_START( )是整个代码的上层入口;
在这里,一般会设置debug模式;设置buff pool;设置transport;设置蓝牙协议栈的回调函数sample_gpio_app_management_cback(),这个回调函数将处理蓝牙协议栈的message。
APPLICATION_START( )跑完后;底层将返回一个"BTM_ENABLED_EVT"的message;应用层执行sample_gpio_app_management_cback(),在BTM_ENABLED_EVT下完成用户应用代码的初始化。
/* Bluetooth stack enabled */
case BTM_ENABLED_EVT:
/* Initializes the GPIO driver */
wiced_bt_app_hal_init();
/* Sample function configures LED pin as output
* sends a square wave on it
* if testing pin 31 then disable puart*/
gpio_test_led( );
/* Sample function configures GPIO as input. Enable interrupt.
* Register a call back function to handle on interrupt*/
gpio_set_input_interrupt( );
break;
至此,示例的初始化完成,代码在应用层执行;
WICED没有将main函数放在上层,所以,用户如果需要添加一些WICED没有预设的外设的操作,只能通过软定时器注册回调函数,在回调函数中处理用户代码;
以下代码为例:
if ( wiced_init_timer( &seconds_timer, &seconds_app_timer_cb, 0, WICED_SECONDS_PERIODIC_TIMER )== WICED_SUCCESS )
{
if ( wiced_start_timer( &seconds_timer, APP_TIMEOUT_IN_SECONDS_A ) != WICED_SUCCESS )
{
WICED_BT_TRACE( "Seconds Timer Error\n\r" );
}
}
/* The function invoked on timeout of app seconds timer. */
void seconds_app_timer_cb( uint32_t arg )
{
wiced_timer_count++;
WICED_BT_TRACE( "seconds periodic timer count: %d s\n", wiced_timer_count );
if(wiced_timer_count & 1)
{
wiced_hal_gpio_set_pin_output( LED_GPIO_1, GPIO_PIN_OUTPUT_LOW);
}else{
wiced_hal_gpio_set_pin_output( LED_GPIO_1, GPIO_PIN_OUTPUT_HIGH);
}
}
通过wiced_init_timer注册seconds_app_timer_cb;在seconds_app_timer_cbzho中执行切换GPIO口的状态,控制LED亮灭。
cypress的开发板只需要一根USB线与电脑连接即可通过WICED完成编译、烧录;
选择最上部菜单"window->show view->make target"
双击对应的make选项,WICED将自己完成编译和下载;
六、有问题欢迎邮件至:[email protected]