单片机与C语言语法注意笔记

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;
}

你可能感兴趣的:(程序员,单片机的系统构成)