STM32的從機硬件IIC用CubeMX配置好了,為什么只能使用輪詢發(fā)送而不能使用中斷發(fā)送呢?從機中斷接收已經(jīng)實現(xiàn)了,這個項目想從1788平臺換到32平臺,對IIC要求很高,需要每2個毫秒通過IIC獲取一次從機的傳感器狀態(tài),從機用輪詢模式發(fā)送肯定不行的。
部分代碼如下:
HAL_Init();
/* Configure the system clock */
SystemClock_Config();
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART1_UART_Init();
MX_I2C2_Init();
MX_TIM3_Init();
MX_TIM2_Init();
MX_TIM4_Init();
/* USER CODE BEGIN 2 */
HAL_TIM_Base_Start_IT(&htim2);
HAL_TIM_Base_Start_IT(&htim3);
HAL_TIM_Base_Start_IT(&htim4);
uint8_t sendbuf[12] = {12,80,3,22,4,6,5,7,9,8};
uint8_t readbuf[12] = {0};
// printf("=== START===\r\n\r\n");
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
l_byBuf2[0] += 1;
l_byBuf2[1] += 1;
l_byBuf2[2] += 1;
l_byBuf2[3] += 1;
HAL_I2C_Slave_Transmit(&hi2c2,(uint8_t *)&l_byBuf2[0],4,100);
// HAL_I2C_Slave_Transmit_IT(&hi2c2,(uint8_t *)&l_byBuf2[0],4);
}
|