get skill

Get Skill

2018-01-16

  > 001  防止数组越界的一种方法

1 char array[5];
2 array[n%5] = value;

  > 002  超时机制

      在等待某个事件或标志时,设定一定时限,时限到,等待的事件或标志还未发生,则输出一条提示信息

      拒绝死等,即永无时限的等待某个事件或标志发生,这样在调试程序很麻烦,不方便定位问题

 1 /**
 2   * @brief  使用SPI发送一个字节的数据
 3   * @param  byte:要发送的数据
 4   * @retval 返回接收到的数据
 5   */
 6 u8 bsp_SpiSendByte(u8 byte)
 7 {
 8     SPITimeout = SPI_TIMEOUT;
 9 
10     /* 等待发送缓冲区为空,TXE事件 */
11     while (SPI_I2S_GetFlagStatus(BSP_SPI, SPI_I2S_FLAG_TXE) == RESET)
12     {
13         if((SPITimeout--) == 0)
14             return SPI_TIMEOUT_UserCallback(0);
15     }
16 
17     /* 写入数据寄存器,把要写入的数据写入发送缓冲区 */
18     SPI_I2S_SendData(BSP_SPI, byte);
19 
20     SPITimeout = SPI_TIMEOUT;
21 
22     /* 等待接收缓冲区非空,RXNE事件 */
23     while (SPI_I2S_GetFlagStatus(BSP_SPI, SPI_I2S_FLAG_RXNE) == RESET)
24     {
25         if((SPITimeout--) == 0)
26             return SPI_TIMEOUT_UserCallback(1);
27     }
28 
29     /* 读取数据寄存器,获取接收缓冲区数据 */
30     return SPI_I2S_ReceiveData(BSP_SPI);
31 }
32 
33 
34 /**
35   * @brief  等待超时回调函数
36   * @param  None.
37   * @retval None.
38   */
39 static  uint16_t SPI_TIMEOUT_UserCallback(uint8_t errorCode)
40 {
41     /* 等待超时后的处理,输出错误信息 */
42     SPI_ERROR("SPI 等待超时!errorCode = %d",errorCode);
43     return 0;
44 }

  > 003  spi总线时钟的4种模式

 

原文地址:https://www.cnblogs.com/skullboyer/p/8295330.html