学习过程中为了防止遗忘 以此文字记录 如有错误 多多包涵
怕什么真理无穷,进一寸有一寸的欢喜 --- 胡适
前置内容:
pyserial 库
学习目标:
- 通过串口实现 Jetson TX1 与 STM32F103 通信 并控制 STM32 led灯闪烁
学习内容:
ls -l /dev/ttyTHS*
查看一下 系统串口
其中 使用 ttyTHS2
sudo chmod 777 /dev/ttyTHS2
设置一下权限 不然等待py代码会报错
TX1 代码如下
import serial as uart
import struct, time
data = 1
data0 = 170
data1 = 1
data2 = 0
i = 1
uart1 = uart.Serial("/dev/ttyTHS2", 115200) #初始串口 波特率为115200
while 1:
uart1.write(chr(data0).encode("utf-8")) #将data0 转换为字符串发送
if i == 1:
i = 0
uart1.write(chr(data1).encode("utf-8"))
elif i == 0:
i = 1
uart1.write(chr(data2).encode("utf-8"))
data = uart1.read(1)
print(data) #打印串口接收到的数据
time.sleep(2)
STM32 串口 中断 代码如下
uint8_t i = 0;
void USART3_IRQHandler(void)
{
uint8_t temp = 0;
if (USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
{
temp = USART_ReceiveData(USART3);
i++;
USART_SendData(USART3, temp);
// USART_SendData(USART3, i);
tx1_data[i] = temp;
if (temp == 0xaa)
{
i = 0;
}
else if (i >= 9)
{
i = 0;
}
USART_ClearFlag(USART3, USART_FLAG_RXNE);
}
}
STM32 main.c 代码如下
int fputc(int ch, FILE *p)
{
USART_SendData(USART3, (u8)ch);
while (USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);
return ch;
}
int main(void)
{
/*初始化函数*/
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 优先级分组 先优先级4,从优先级4
delay_init(); // 延迟函数初始化
USART3_Init_TX_B10_RX_B11(115200); // 串口初始化
C13_Init(); // LED初始化
while (1)
{
if (tx1_data[1] == 0x01)
{
GPIO_SetBits(GPIOC, GPIO_Pin_13);
}
else if (tx1_data[1] == 0x00)
{
GPIO_ResetBits(GPIOC, GPIO_Pin_13);
}
delay_ms(20);
}
}
疑问:
- 暂无