一、24C02简介
24C02是2Kbit串行EEPROM,CT117E—M4竞赛训练板的硬件设计无法使用I2C接口,只能通过并口仿真I2C接口实现对24C02的读写操作。
引脚 | 功能 | 方向 | 说明 |
---|---|---|---|
1 | A0 | 输入 | 器件地址0 |
2 | A1 | 输入 | 器件地址1 |
3 | A2 | 输入 | 器件地址2 |
4 | GND | — | 地 |
5 | SDA | 双向 | 串行数据 |
6 | SCL | 输入 | 串行时钟 |
7 | WP | 输入 | 写保护 |
8 | VCC | 输入 | 电源(2.7~5.5V) |
在STM32CubeMX中打开,USART1和USART2设置,打开USART1中断设置。如下图
添加到usart.c
extern char RX_buff[10];
void MX_USART1_UART_Init(void){
/* USER CODE BEGIN USART1_Init 2 */
HAL_UART_Receive_IT(&huart1,(uint8_t *)RX_buff,1);
/* USER CODE END USART1_Init 2 */
}
添加到main.c
char RX_buff[10];//接受缓冲区
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
HAL_UART_Transmit(&huart1,(uint8_t *)RX_buff,(uint16_t)sizeof(RX_buff),20);
HAL_UART_Receive_IT(&huart1,(uint8_t *) RX_buff,1);
}
//完成数据的接受与输出
uint16_t TX_ms=0;//毫秒计数
char TX_buff[100];//发送缓冲区
uint16_t TX_t=0;
if(TX_ms==1000){
sprintf(TX_buff,"%04d Fighting! zzy",TX_t);
HAL_UART_Transmit(&huart1,(uint8_t *)TX_buff,(uint16_t)sizeof(TX_buff),20);
TX_t++;
TX_ms=0;
}
参考上一篇SysTick定时器中断,完成数据的发送