在uC/OS下,串口配置與不使用uC/OS基本相同,但中斷處理有些差別。在uC/OS下取消了固件庫(kù)中的stm32f10x_it.c文件,去而代之的是app_vect_v5.c.下面是幾個(gè)中斷處理的函數(shù):
本文引用地址:http://m.butianyuan.cn/article/201611/319513.htmbsp_int.c提供幾個(gè)關(guān)鍵的中斷操作函數(shù):
voidBSP_IntDis(CPU_DATAint_id)//關(guān)閉指定中斷
voidBSP_IntDisAll(void)//關(guān)閉所有中斷
voidBSP_IntEn(CPU_DATAint_id)//使能指定中斷
voidBSP_IntVectSet(CPU_DATAint_id,
CPU_FNCT_VOIDisr)//用這個(gè)函數(shù)把用戶編寫的中斷函數(shù)的首地址放在中斷入口處.
中斷發(fā)生后,系統(tǒng)調(diào)用用戶中斷函數(shù).
voidBSP_IntPrioSet(CPU_DATAint_id,
CPU_INT08Uprio)//設(shè)置中斷優(yōu)先級(jí)
只要調(diào)用BSP_IntVectSet(),就可以把用戶定義的中斷處理函數(shù)映射到相應(yīng)的中斷入口上了。
值得注意的是在app_vect_v5.c.文件中的中斷向量表,只列出了串口1,2,3的中斷入口,4,5要自己添加,否則不會(huì)產(chǎn)生中斷。
還有在串口1,2,3的配置中,不調(diào)用以下代碼設(shè)置NVIC也能正常工作。
NVIC_InitTypeDef NVIC_InitStructure;
// Enable the USART1 Interrupt
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);*/
而在串口4,5中如果執(zhí)行以上代碼就不會(huì)產(chǎn)生中斷。
評(píng)論