|
本帖最后由 Psheng 于 2019-3-1 21:10 编辑
本次教学将使用F767指纹模块的源码 将串口2驱动改为串口4
首先用例程测试下模块是否能正常使用然后再移植(不然模块出问题了,后续移植就不可能成功)
第一步:将例程复制出来(不要直接在源程序上面修改,这样改错了不好对照)
第二部:新建一个专门的串口工程(比如这次我们是将串口2 改到 串口4)
2.1:首先确定IO口及其状态 我采用的是阿波罗的F7板子 串口4用到的io为PA11 PA12 确定了这两个IO是空闲的 可以使用。
2.2:因为是改串口的,所以直接复制了串口例程 新建了usart4.h 和usart4.c文件 并且添加进工程
2.3:在串口4的工程中先配置好串口4 并且测试下收发是否正常(一定要测试成功!,不然一步错 后面都调不通)[mw_shl_code=c,true]USART4 A12 A11
*/
int main(void)
{
int t;
Cache_Enable(); //打开L1-Cache
HAL_Init(); //初始化HAL库
Stm32_Clock_Init(432,25,2,9); //设置时钟,216Mhz
delay_init(216); //延时初始化
usart4_init(115200);
LED_Init(); //初始化LED
while(1)
{
usart4_test();//串口4测试函数
HAL_Delay(10);
t++;
if(t>100)
{
t=0;
LED0_Toggle;
}
}
}[/mw_shl_code]
[mw_shl_code=c,true]void usart4_test(void)
{
u32 len;
static u32 times=0;
if(USART_RX_STA_4&0x8000)
{
len=USART_RX_STA_4&0x3fff;//得到此次接收到的数据长度
u4_printf("\r\n usart4:您发送的消息为:\r\n");
HAL_UART_Transmit(&hUART4,(uint8_t*)USART_RX_BUF_4,len,1000); //发送接收到的数据
while(__HAL_UART_GET_FLAG(&hUART4,UART_FLAG_TC)!=SET); //等待发送结束
u4_printf("\r\n\r\n");//插入换行
USART_RX_STA_4=0;
}else
{
times++;
if(times%200==0)u4_printf("usart4:请输入数据,以回车键结束\r\n");
}
}[/mw_shl_code]
和电脑串口助手测试如图
第三步:将测试好的串口4代码添加到指纹例程里面(头文件路径也要添加),并删除掉串口2的文件
第四步:在主函数中包含串口的头文件并且在主函数中调用串口初始化函数
第五步:修改AS608中的MYUSART_SendData()函数为串口4的寄存器
5.1:修改JudgeStr()函数为串口4的寄存器
5.2: 修改函数PS_HandShake()中的寄存器为串口4的
第六部:完成 插上模块能正常实验
注意
1 。以上的代码修改均可以在我修改后的工程中全局搜索 /*change*/ 找到修改过的地方
ctlr+f
2。 由于串口1用过了函数HAL_UART_MspInit(),所以在串口4中为了方便底层初始化也写在函数usart4_init()里面
串口中断接收函数还是按照HAL库的写法
3。PA11 是接收 PA12是发送
F767_串口4.rar
(11.38 MB, 下载次数: 18)
|
|