请选择 进入手机版 | 继续访问电脑版
查看: 4706|回复: 9

[原创] [TRK-KEA8开发笔记]串口UART及PIT中断程序

[复制链接]
  • TA的每日心情

    2016-10-20 09:45
  • 签到天数: 1 天

    [LV.1]初来乍到

    80

    主题

    1038

    帖子

    5

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2223
    最后登录
    2023-11-20
    发表于 2015-11-3 20:30:42 | 显示全部楼层 |阅读模式
    本帖最后由 花溪村长 于 2015-11-3 20:32 编辑

    程序开发采用库形式,UART和PIT比较简单,就不详细说明了,直接上程序,程序中UART中断接收模式,默认接收数据后再发送到串口,PIT模块设定500ms中断一次,LED闪烁,同时打印信息到串口上
    UART初始化:
    1. //UART初始化
    2.         UART_InitTypeDef UART_InitStruct;
    3.         UART_InitStruct.UART_BaudRate = 115200; //波特率
    4.         UART_InitStruct.UART_WordLength = UART_WordLength_8b ;  //数据长度
    5.         UART_InitStruct.UART_StopBits = UART_StopBits_1;       //停止位
    6.         UART_InitStruct.UART_Parity = UART_Parity_No;          //奇偶校验
    7.         UART_InitStruct.UART_Mode = UART_Mode_Rx|UART_Mode_Tx; //使能RX和TX
    8.         UART_InitStruct.UART_PIN = RX_PTB0_TX_PTB1 ;          //引脚选择
    9.         UART_Init(&UART_InitStruct);                     //初始化UART
    10.         UART_ITConfig(UART_IT_RXNE, ENABLE);             //接收中断使能
    11.         NVIC_Init(UART0_IRQn,1);
    复制代码

    复制代码
    PIT初始化:
    PIT初始化可选为 PIT模式  PIT_Mode_ms,  //ms模式  PIT_Mode_us  //us模式       

    1. //PIT初始化
    2.         PIT_InitTypeDef  PIT_InitStruct;
    3.         PIT_InitStruct.CHANNELx = PIT_CHANNEL0; //选择通道0
    4.         PIT_InitStruct.PIT_Mode = PIT_Mode_ms;  //ms中断
    5.         PIT_InitStruct.Timer = 500;            //500ms
    6.         PIT_Init(&PIT_InitStruct);             //初始化
    7.         PIT_ITConfig(PIT_CHANNEL0,ENABLE);     //PIT中断使能
    8.         PIT_ClearFlag(PIT_CHANNEL0);          //清除中断标志
    9.         PIT_Cmd(PIT_CHANNEL0,ENABLE);         //PIT使能
    10.         NVIC_Init(PIT_CH0_IRQn,1);            //NVIC使能
    复制代码
    PIT
    中断子程序

    1. /**
    2.   * @brief  This function handles PIT0 exception.
    3.   * @param  None
    4.   * @retval None
    5.   */
    6. void PIT_CH0_IRQHandler()
    7. {
    8.         static u32 i = 0 ;
    9.         PIT_ClearFlag(PIT_CHANNEL0); //清除中断标志
    10.         GPIO_ToggleBits(PTC,PTC1|PTC2);
    11.         i++;
    12.         printf("PIT Interrupt:%d\r\n",i);
    13. }
    复制代码


    串口接收的数据如图:

    QQ截图20151103202820.png

    附上源代码:
    TRK-KEA8.rar (119.1 KB, 下载次数: 342)
    回复

    使用道具 举报

    该用户从未签到

    18

    主题

    371

    帖子

    0

    禁止发言

    积分
    817
    最后登录
    2022-10-27
    发表于 2015-11-3 21:57:32 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    15051
    最后登录
    1970-1-1
    发表于 2015-11-3 22:11:12 | 显示全部楼层
    学习一下,这两天暂时没有时间,回头像楼主学习
    00000.jpg
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-1-6 07:38
  • 签到天数: 736 天

    [LV.9]以坛为家II

    21

    主题

    3486

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    5093
    最后登录
    2024-1-7
    发表于 2015-11-3 23:35:12 | 显示全部楼层
    谢谢分享
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    49

    帖子

    0

    注册会员

    Rank: 2

    积分
    134
    最后登录
    2016-1-18
    发表于 2015-11-5 14:43:37 | 显示全部楼层
    谢谢分线啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2021-3-10 19:44
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    126

    主题

    525

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2018
    最后登录
    2023-12-25
    发表于 2015-11-6 20:51:28 | 显示全部楼层
    封装的及其像STM32
    很开心
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    11

    帖子

    0

    注册会员

    Rank: 2

    积分
    74
    最后登录
    2018-5-2
    发表于 2016-9-3 13:56:10 | 显示全部楼层
    你好!我用了你这个串口程序,用UART_SendData电脑串口是可以接收到数据的,但是用printf发现程序就死在这里面了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    11

    帖子

    0

    注册会员

    Rank: 2

    积分
    74
    最后登录
    2018-5-2
    发表于 2016-9-3 14:09:58 | 显示全部楼层
    在你那个GPIO的程序下加了printf函数,可能哪里没设置对,我在查查看配置里有什么区别
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    11

    帖子

    0

    注册会员

    Rank: 2

    积分
    74
    最后登录
    2018-5-2
    发表于 2016-9-3 15:37:10 | 显示全部楼层
    找到问题了,中断里面把int fputc(int ch,FILE *f)这个函数注释掉了,导致printf死了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    38
    最后登录
    2019-12-15
    发表于 2019-7-27 06:16:08 | 显示全部楼层
    谢谢大佬分享,小白路过,正在学习
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-3-29 19:43 , Processed in 0.143570 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表