课设
毕设
论文
工具
软件
开发学习套件
礼品中心
助学活动
校园大使
讲师招募
黑板报
联系我们
畅学电子
首页
学习
单片机
硬件设计
软件开发
技术应用
基础课
课设毕设
电子竞赛
职场创业
课程
计划
项目
小组
登录
注册
小组
»
单片机
»
PIC
»
讨论区
小组首页
讨论区
附件区
成员
PIC24F16KL402开发板使用笔记五: SPI与ARM RK3188例程
SPI数据发送例程:
/*
* File: main_xc16.c
* Author: Aric Wang
*
* Created on 2015 3.24
* DESC: Demo code for PIC24F16KL402 SPI communica
ti
on.
*/
#include "xc.h"
_FBS
(
BWRP_OFF & // Boot Segment Write Protect (Disabled)
BSS_OFF // Boot segment Protect (No boot flash segment)
)
//_FGS
//(
// GWRP_OFF & // General Segment Flash Write Protect (General segment may be written)
// GSS0_OFF // General Segment Code Protect (No Protection)
//)
_FOSCSEL
(
FNOSC_LPRC & // Oscillator Select (8MHz FRC with Postscaler (FRCDIV))
// SOSCSRC_ANA & // SOSC Source Type (Analog Mode for use with crystal)
// LPRCSEL_HP & // LPRC Power and Accuracy (High Power/High Accuracy)
IESO_ON // Internal External Switch Over bit (Internal External Switchover mode enabled (Two-speed Start-up enabled))
)
_FOSC
(
// POSCMD_HS & // Primary Oscillator Mode (Primary oscillator disabled)
OSCIOFNC_ON & // CLKO Enable Configuration bit (CLKO output signal enabled)
POSCFREQ_MS & // Primary Oscillator Frequency Range Configuration bits (Primary oscillator/external clock frequency between 100kHz to 8MHz)
SOSCSEL_SOSCHP &// SOSC Power Selection Configuration bits (Secondary Oscillator configured for high-power operation)
FCKSM_CSECME // Clock Switching and Monitor Selection (Clock Switching and Fail-safe Clock Monitor Enabled)
)
_FWDT
(
// WDTPS_PS32768 & // Watchdog Timer Postscale Select bits (1:32768)
FWPSA_PR128 & // WDT Prescaler bit (WDT prescaler ratio of 1:128)
FWDTEN_OFF & // Watchdog Timer Enable bits (WDT disabled in hardware; SWDTEN bit disabled)
WINDIS_OFF // Windowed Watchdog Timer Disable bit (Standard WDT selected (windowed WDT disabled))
)
// Warning:
// Always enable MCLRE_ON config bit setting so that the MCLR pin function will
// work for low-voltage In-Circuit Serial Programming (ICSP). The Microstick
// programming circuitry only supports low-voltage ICSP. If you disable MCLR pin
// functionality, a high-voltage ICSP tool will be required to re-program the
// part in the future.
_FPOR
(
BOREN_BOR3 & // Brown-out Reset Enable bits (Enabled in hardware; SBOREN bit disabled)
PWRTEN_ON & // Power-up Timer Enable (PWRT enabled)
I2C1SEL_PRI & // Alternate I2C1 Pin Mapping bit (Default SCL1/SDA1 Pins for I2C1)
BORV_V18 & // Brown-out Reset Voltage bits (Brown-out Reset at 1.8V)
MCLRE_ON // MCLR Pin Enable bit (RA5 input disabled; MCLR enabled)
)
_FICD
(
ICS_PGx3 // ICD Pin Placement Select (EMUC/EMUD share PGC3/PGD3)
)
unsigned char data_temp;
void init_channel()
{
//Init SPI pins.
//As master SDI1 is input, SDO1 is ouput, SCK1 is output, SS is output.
;
}
void init_SPI1_IO()
{
TRISBbits.TRISB10 = 1; //Set SDI1 as an input.
TRISBbits.TRISB13 = 0; //Set SDO1 as an output.
TRISBbits.TRISB11 = 0; //Set SCK1 as an output.
TRISBbits.TRISB15 = 0; //Set SS1 as an output.
TRISAbits.TRISA0 = 0;
TRISBbits.TRISB3 = 0;
}
void init_SPI1(void)
{
// SPI1CON1 setting
SSP1STAT =0b0000000010000000; //0b 0000 0000 1000 0000 0x0000;
SSP1CON1 = 0b0000000010100001; //0x0021;//
//SSP1CON3bits.BOEN = 0;
SSP1ADD = 0x000f;
PADCFG1 = 0x0c00; //0b0000 1100 0000 0000
// IFS1bits.SSP1IF = 0;
// IEC1bits.SSP1IE = 1;
// IPC4bits.SSP1IP = 4;
}
void tx_spi_data(unsigned char dat)
{
SSP1BUF = dat;
//while(!IFS1bits.SSP1IF);
while(SSP1STATbits.BF)
// IFS1bits.SSP1IF = 0;
data_temp = SSP1BUF;
}
void delay(unsigned int uiCnt)
{
int i,j;
for(i=0;i<uiCnt;i++)
for(j=0;j<10;j++);
}
int main(void) {
//Data to be sent.
unsigned int tx[10]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
int i;
delay(100);
//SSP1BUF=0;
init_channel();
init_SPI1_IO();
init_SPI1();
//SSP1BUF=0;
LATBbits.LATB3 = 1;
// SSP1BUF = 0;
LATBbits.LATB15 = 1;
while(1)
{
for(i=0;i<9;i++)
{
tx_spi_data(tx[i]);
// LATBbits.LATB3 ^= 1;
}
// delay(2);
LATAbits.LATA0 ^= 1;
}
return 0;
}
void __attribute__((interrupt,no_auto_psv)) _SPI1Interrupt(void)
{
//IFS1bits.SSP1IF = 0; //Clear Interrupt status of SPI1
// IEC1bits.SSP1IE = 1;
}
粽子糖果
发表于
10-26 10:53
浏览65535次
分享到:
已有0条评论
暂时还没有回复哟,快来抢沙发吧
添加一条新评论
只有登录用户才能评论,请先
登录
或
注册
哦!
话题作者
粽子糖果
(总统)
金币:
41631个
|
学分:
51991个
同小组最新话题
C语言编程
PIC单片机型号中后缀A/B/C分别代表什么
PIC单片机的各种中断有没有优先级之分
PIC单片机型号的温度级如何识别
PIC单片机应用中晶体选择的注意事项
PIC单片机应用时出现上电工作正常而睡眠后唤醒不了
用PICSTAR-PLUS烧写16CE625-04/P保密位无法烧成"保密"
PIC16C7XX的A/D片内RC振荡器能否用于计数器?
使用带A/D的PIC芯片时怎样才能提高A/D转换的精度?
为何系统在外界磁场和电场的干扰时不能正常工作
课程推荐
» 更多
STM32学习之气宗——寄存器篇
畅学一氧化碳报警仪基础教程
畅学nRF905无线收发模块实战教程
畅学三合一51单片机实战教程
《圈圈教你玩USB》配套USB开发板实战教程
AVR单片机开发环境搭建-实战操作演练精讲课程
畅学LED广告屏F3.75点阵屏模块实战教程
PIC单片机开发环境-MPLAB软件的实战操作
简易数字式电阻、电容、电感测量仪教程
畅学蓝牙小车模块精讲教程
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!
已有畅学电子网帐号?
登录
可从合作网站帐号登录:
QQ
新浪微博
x