如何用串口通信SCI将外部中断的次数值发至上位机

本设计内容采用DSP28335开发环境,目的将外部中断的次数利用串口通信SCI传至上位机显示

DSP28335 做的
需要有个函数 是将整数转成字符串



void itoa_mf(int num,char str[])
{
    int sign = num;
    int i = 0;
    int j = 0;
    char temp[100];
    //如果是负数就去掉符号,将-1234转成1234
    if(sign < 0)
    {
        num = -num;
    }
    //转成字符串,1234转成"4321"
    do
    {
        temp[i] = num % 10 + '0';
        num /= 10;
        i++;
    }while(num > 0);
    //如果是负数的话,加个符号在末尾,如:"4321-"
    if(sign < 0)
    {
        temp[i++] = '-';
    }
    temp[i] = '\0';
    i--;
    //将temp数组中逆序输入到str数组中
    //将"4321-" ====> "-1234"
    while(i >= 0)
    {
        str[j] = temp[i];
        j++;
        i--;
    }
    //字符串结束标识
    str[j] = '\0';
}

这个函数写在了中断处理函数.c文件里 在 EXTI1_IRQn 上边
EXTI1_IRQn 函数里这样写

extern unsigned int iCount;
interrupt void EXTI1_IRQn(void)
{
    char sstring[16] = {0};
    itoa_mf(iCount,sstring);  // 整形转字符
    iCount++; //计数加1
    UARTa_SendString(sstring);  //从SCIA发送给上位机
    Uint32 i;
    for(i=0;i<10000;i++);    //键盘消抖动
    while(!KEY_H1);
    LED2_TOGGLE;
    PieCtrlRegs.PIEACK.bit.ACK1=1;
}

其他都是按部就班得引入,记得计数变量写在main.c里

extern int iCount = 0;
extern int iCount = 0;
void main()
{
    InitSysCtrl();

    DINT;
    InitPieCtrl();
    IER = 0x0000;
    IFR = 0x0000;
    InitPieVectTable();
。。。。。

用串口助手连上,

img

按按钮

img

img

img


多按几次

img


总体步骤 点
1、需要初始化 SCIA GPIO35、36 用个 TTL转USB 连到电脑上
2、打开串口助手 连上 波特率对上,ASCII模式接收
3、初始化中断,按键,LED灯这些模块
4、设定共有变量 iCount 在EXTI1_IRQn函数里 iCount 自加1 ,由整型转换成 string型,再通过SCIA 发送给上位机