1. 程式人生 > >dsPIC33EP單片機的PPS(外設引腳選擇)

dsPIC33EP單片機的PPS(外設引腳選擇)

進行 高級 使用 正常 匯編語言 工作 嘗試 數據 pin

利用dsPIC33EP單片機進行can通信的時候用到引腳復用

引腳復用通過查詢數據手冊:

C1RX的寄存器為RPINR26.C1RXR=(設置為需要用到的引腳)

引腳設置為輸入(C1RX),TRIS=1;

C1TX需要用的引腳為RPn41,查詢數據手冊RPn41的寄存器=0001110;

但是為了防止引腳復用更改,對引腳復用功能調用的時候需要對控制寄存器鎖定位進行解鎖

正常工作時,不允許寫 RPINRx 和 RPORx 寄存器;嘗試進行寫操作外表看起來會正常執行,但寄存器的內容將保持不變。要更改這些寄存器,應在硬件中將其解鎖。寄存器鎖定由 IOLOCK 位(OSCCON<6>)控制。將IOLOCK 置1 可阻止控制寄存器被寫入;將 IOLOCK清零允許寫入。
要將 IOLOCK置1 或清零,必須執行以下特定命令序列:
1)將 46h寫入 OSCCON<7:0>。
2)將 57h寫入 OSCCON<7:0>。
3)以單個操作清零(或置 1)IOLOCK。

解鎖 / 鎖定序列必須以與更改振蕩器配置相同的方式作為匯編語言程序執行,這是因為解鎖序列與定時有關。如果應用程序的主體是用 C 語言或其他高級語言編寫的,則應通過寫一段行內匯編程序或使用 MPLAB? C30 C 編譯器提供的內置函數執行解鎖序列。
IOLOCK 在被更改前將保持同一狀態。這使所有外設引腳選擇均可用一個解鎖序列,並隨後對所有控制寄存器進行更新,然後用第二個鎖定序列來鎖定這種方式配置。

註: MPLAB? C30 C編譯器提供了內置的C語言函數用以對OSCCON寄存器進行解鎖。
__builtin_write_OSCCONL(value)
__builtin_write_OSCCONH(value)


更多信息請參見 《MPLAB C30 C 編譯器用戶指南》。

dsPIC33EP單片機的PPS(外設引腳選擇)