bigfanofloT 发表于 2017-12-10 19:00 int32_t uartWrite(uint8_t *buf, uint32_t len) { uint8_t crc[1] = {0x55}; uint32_t i = 0; uint8_t aa=0x55; if(NULL == buf) { return -1; } for(i=0; i<len; i++) { // HAL_UART_Transmit_IT(&huart2, (uint8_t *)&buf, 1); HAL_UART_Transmit(&huart2, (uint8_t *)&buf, 1,50); // while (huart2.State != HAL_UART_STATE_READY);//Loop until the end of transmission if(i >=2 && buf == 0xFF) { // HAL_UART_Transmit_IT(&huart2, (uint8_t *)&crc, 1); HAL_UART_Transmit(&huart2, (uint8_t *)&buf, 1,50); // while (huart2.State != HAL_UART_STATE_READY);//Loop until the end of transmission } } #ifdef PROTOCOL_DEBUG GIZWITS_LOG("MCU2WiFi[%4d:%4d]: ", gizGetTimerCount(), len); for(i=0; i<len; i++) { GIZWITS_LOG("%02x ", buf); if(i >=2 && buf == 0xFF) { GIZWITS_LOG("%02x ", 0x55); } } GIZWITS_LOG("\n"); #endif return len; } 程序注掉的地方是中断发送的,这么写,程序运行有问题,按照你的换成轮询的就好了,而且咱们用CubeMx生成的hal_uart.h文件中的结构体UART_HandleTypeDef中是这样的 typedef struct { USART_TypeDef *Instance; /*!< UART registers base address */ UART_InitTypeDef Init; /*!< UART communication parameters */ uint8_t *pTxBuffPtr; /*!< Pointer to UART Tx transfer Buffer */ uint16_t TxXferSize; /*!< UART Tx Transfer size */ uint16_t TxXferCount; /*!< UART Tx Transfer Counter */ uint8_t *pRxBuffPtr; /*!< Pointer to UART Rx transfer Buffer */ uint16_t RxXferSize; /*!< UART Rx Transfer size */ uint16_t RxXferCount; /*!< UART Rx Transfer Counter */ DMA_HandleTypeDef *hdmatx; /*!< UART Tx DMA Handle parameters */ DMA_HandleTypeDef *hdmarx; /*!< UART Rx DMA Handle parameters */ HAL_LockTypeDef Lock; /*!< Locking object */ __IO HAL_UART_StateTypeDef State; /*!< UART communication state */ __IO uint32_t ErrorCode; /*!< UART Error code */ }UART_HandleTypeDef; 而官网生成的代码是这样的,我忘了是官网生成的还是你的一个教程里面的,是这样的typedef struct { USART_TypeDef *Instance; /*!< UART registers base address */ UART_InitTypeDef Init; /*!< UART communication parameters */ uint8_t *pTxBuffPtr; /*!< Pointer to UART Tx transfer Buffer */ uint16_t TxXferSize; /*!< UART Tx Transfer size */ __IO uint16_t TxXferCount; /*!< UART Tx Transfer Counter */ uint8_t *pRxBuffPtr; /*!< Pointer to UART Rx transfer Buffer */ uint16_t RxXferSize; /*!< UART Rx Transfer size */ __IO uint16_t RxXferCount; /*!< UART Rx Transfer Counter */ DMA_HandleTypeDef *hdmatx; /*!< UART Tx DMA Handle parameters */ DMA_HandleTypeDef *hdmarx; /*!< UART Rx DMA Handle parameters */ HAL_LockTypeDef Lock; /*!< Locking object */ __IO HAL_UART_StateTypeDef gState; /*!< UART state information related to global Handle management and also related to Tx operations. This parameter can be a value of @ref HAL_UART_StateTypeDef */ __IO HAL_UART_StateTypeDef RxState; /*!< UART state information related to Rx operations. This parameter can be a value of @ref HAL_UART_StateTypeDef */ __IO uint32_t ErrorCode; /*!< UART Error code */ }UART_HandleTypeDef; 后面那部分不一样,不知道是不是这个原因导致的 |
bigfanofloT 发表于 2016-11-8 20:39 我刚用你教的“3分钟教你创建WIFI远程控制应用,图形化编程,自动代码生.”控制了一个LED,我想用这样的办法控制STM32F103C8T6的全部输出(都用做输出),能不能指导一二?版主!因为其他的温湿度采集,马达正反转都有现成的,就是没有全部引脚定义并控制的,盼版主回复,谢谢! |
tianzuoan 发表于 2016-11-8 20:48 控制LED的话,原理是相通的,都属于开关量下发控制,你要控制多少个就在云端创建多少个数据点,然后把硬件搭建好,在MCU端编写底层驱动就可以了,照着葫芦画瓢,推荐使用STM32CubeMX图形化配置。 |
大家好呀 |
大家好 很高兴遇见 |
自己的产品标识码 也就看看,学习一下,谢谢分享!是PRODUCT_KEY 那个后三位也不用改 |
赞赞 |
你好,新手,学习 |
系列教程,太棒了! |
666666666666666666666666666666 |
校园创客福利1.STM32底板,Gokit V2.1 微信宠物屋源码官方下载: |
来学习啦 |
1111111111111111111 |
学习 学习 |
佩服佩服 |
感谢分享 |
非常值得学习的全流程开发实践 |
学习一下 |
谢谢,感谢楼主分享这么好的 |
dddddddddddddddddddddddddddddddddddddddddddddddddd |
3分钟教你创建手机APP远程温度监控应用,图形化编程! [修改] |
只能看懂10%的字 看来还要学习学习 |
感谢楼主分享,小白来学习辽 |
版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )