1.在使用单片机的时候注意无符号整形变量和一般整形变量的区别
2.进行比较的时候最好使用一般变量进行比较,如果原来变量是无符号变量最好将其进行强制类型转换,转换成。一般类型变量进行比较
3.在进行减法的时候一定注意,注意数据的类型,否则程序一定会出bug的, 统一变量类型进行减法。
4.串口通讯的时候,sizeof和strlen可以测量字符串长度但是应用于以下程序的出现了问题:
/**
- @brief Sends an amount of data in non blocking mode.
- @param huart: pointer to a UART_HandleTypeDef structure that contains
-
the configuration information for the specified UART module.
- @param pData: Pointer to data buffer
- @param Size: Amount of data to be sent
- @retval HAL status
*/
HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
只有使用一开始再usart.h中定义好的
typedef struct
{
uint8_t RX_flag:1; //IDLE receive flag ½ÓÊÕÖжÏÇå³ý±ê־λ
uint16_t RX_Size; //receive length ½ÓÊÕÊý¾Ý³¤¶È
uint8_t RX_pData[RX_LEN]; //DMA receive buffer DMA½ÓÊÕÊý¾ÝͨµÀ
uint8_t dmaSend_flag:1;//·¢ËÍÍê³É±ê¼Ç
}USART_RECEIVETYPE;
以下函数添加在usart.c中可以调用printf函数,但是其中HAL_UART_Transmit不能替换为HAL_UART_Transmit_DMA,否则会出乱码
int fputc(int ch,FILE *f)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}