tag 标签: 并行多线程

相关博文
  • 热度 9
    2022-11-2 09:19
    3073 次阅读|
    1 个评论
    前言 mc3172评测前言mc3172是一款32位risc处理器。可以执行64线程同步运行,这款单片机实际上和我以前玩过的一些单片机都有所不同,区别在以下两点,首先mc3172实现了不需要像操作系统线程调度那样的线程操作,通过硬件配置实现了线程操作。其次是mc3172的mdk是基于c++的,而这对于用惯了keil的我来说是个难题,用c习惯的用法在c++里就会绊脚,这里由于本人实力尚浅,没能写出ds1302时钟的程序。这里就简单介绍我编写的基于MC3172串口打印计时器设计,这一功能可以供大家做功能拓展使用,程序链接我会附在文末,大家可以下载交流 1实现原理 对于这款单片机,我觉得板子外设的驱动尚且还不算太难,毕竟有官方的介绍文档,以及论坛一些大佬的代码例程。在我初期研究几天后算是把外设的起步内容研究好,如果要实现计时器,则需要的外设就包括定时器,以及串口进行打印。定时器通过双规则区轮询计数,具体来说就是设定规则区0的起始值和终止值。然后再设定规则区1的起始值和终止值。定时器时钟周期基于系统时钟分频。计数时就是先在规则区0从起始计数到末尾。规则区0计数完成后自动跳转到规则区1的起始处进行计数。如此往复。还是不同于主流单片机的计数功能。可以看下图我详细注释的代码 上面的代码时论坛直接找的例子。基于这个例子我推导出了定时器配置的函数 这个定时器只通过一个CORE_CNT来获取实时计数值。也就是定时器启动后一直运行 这样定时器部分的配置就解决了。接下来就是串口收发部分。这里直接采用了串口的例程。由于官方暂时未适配标准库相关函数(例如sprintf)。我这里一开始也对串口机制不熟悉走了弯路。采用单个字符即写即发。在这个板子上如果快速发送(小于1ms的延时)。基本上在PC上位软件会显示混乱。而在通过for循环字符串整体收发时。就不会出现这样的情况。因此我采用字符串预生成后发送的方法解决了串口收发问题。这一处程序也可以作为大家的串口收发参考例程。下面我把关键部分展示出来 红框标注的内容时串口操作时需要定义的变量。利用一个枚举类型做状态切换。用于将固定发送内容(codechar保存)与自制预处理字符串(sec_str保存)分别发送到电脑上。 下面是串口部分具体实现 2主体功能及展示。 主体实现的功能就是串口打印计时时间。每隔2s显示一次。可以记录时。分。秒三个数据 具体代码已在上述图片中的串口部分展示出。这里就不具体展示。下面给出串口结果 3之后计划做的事。 研究一下这个板子的线程通信方法以及如何像带有中断的单片机一样利用定时器计时。这样之后可以借此移植其他板子的超声波测距函数。 4给官方的建议 关于GPIO的库函数感觉相关函数太少以及描述内容不详细。有些我想写的功能但是引脚按照配置后板子实测效果却和预想不同。比如IO口配置成GPIO输入模式。文档里有写可以配置成上拉和下拉。但是并没有找到下拉相关函数。GPIO相关函数不完善我觉得是我写一些外设驱动的阻碍。希望官方能考量我的意见完善一下GPIO的函数 链接:https://pan.baidu.com/s/1bZz4v0ygTnTwOuDkikHsYQ?pwd=fxzq 提取码:fxzq