整理笔记:初识应广(单片机)

学习应广单片机(一)

学习应广 PMS132B系列 单片机的知识。这片文章用于记录学习该芯片的笔记。

题外话

先吐槽一下,由于一开始做的是视觉检测。但是后来发现自己不是那块料。又因为各种原因。最后选择了走这条路。当时直接上手的第一块单片机也就是应广单片机。花了不少的时间去学习,整改。再加上没有系统的学习这类知识,都是在边学边做的情况下,开始了项目。
学习单片机,最重要的就是动手实践。最好的时间也是从大学开始。像我这种半路进场的。应该还不算少,特别是这几年的疫情,很多人失业,转行的不少。大家都是为了混口饭吃。那么一起努力吧。
老话题:网上的资料不是说没有,但是同种问题相同解答的不少。也可能是我不会找答案。

内容

此次分为三个内容来记录:
1、简单的了解一下学习内容(一)
2、制作一个小的点灯工程。可能也就几行代码
3、分析我之前遇到的问题以及解决办法

IO设置

设置IO脚位的不同输入或者输出状态。

简单一点,用八个脚位的芯片讲解
这个芯片只有八个脚位。排除VDD(接电源)和GND(接地)的脚位,那么剩下的也就只有六个脚位可用。也就是(2、3、4、5、6、7)
(2)PA6脚位/外部晶振
(3)PA5脚位/可作为复位脚/11位计数器。
(4)PB7脚位/ADC/8位计数器/11位计数器
(5)PB1脚位/ADC/ADC外部参考电压
(6)PA3脚位/ADC/8位计数器/11位计数器
(7)PA4脚位/ADC/8位计数器/11位计数器
不同端口的脚位有着不同的功能,就像PA6只能拉高拉低,而不能作为8位的计数器以及11位的计数器。

详细的资料请参考:
https://download.csdn.net/download/weixin_45142802/15805758

值得一提的是,仅目前我所知的IO初始化写法就有三种
三种IO初始化写法
当前设置的是PA6端口的初始化。分别要设置数据寄存器、数据控制寄存器和上拉控制寄存器。

第一种写法比较常规,在设置多个端口的同时使用会比较方便一点,缺点是新手容易弄混。
第二种写法就比较简单,很简单就能看出这是什么脚位的初始化,以及它的属性。缺点是单一,无法同时控制其他脚位。我比较喜欢用这种方式,当然,在脚位多的情况下还是在用第一种方式。
第三种写法比较少见。它的原理同第一种写法类似。
2进制转16进制
第三种的写法现在已经很少看到了,而比较流行的写法也就是第一种的写法。一开始在不熟悉的情况下,每次都要把这种关系写在旁边。浪费了不少的时间。熟悉后,突然发现还有第二种的写法,发现更为简单。于是还是在用第二种写法,不过这只是在应广当中可以使用的。不同商家的芯片还是有这不同的写法,像51单片机这些,还是注重的是第一种的写法。

点灯工程

编写一款由按键控制的打开,关闭的灯

首先,建立工程。应广的工程不同于其他工程需要用到FPPA IDE,由应广开发的一款编程软件,可用MINI-C和汇编语言。相对keil来讲就没有那么完美。

#include	"extern.h"
KEY equ  PB.1       //设置PB1为按钮控制
void	FPPA0 (void)
{
	.ADJUST_IC	SYSCLK=IHRC/4		//	SYSCLK=IHRC/4

	while (1)
	{
		if(!KEY)
		{
			//由端口的拉高拉低来控制灯的亮、暗。拉高为亮。拉低为暗
			PA.6 OUT,HIGH;
			/*
			PA = 0B0100_0000;
			PAC = 0B0100_0000;
			PAPH = 0B0100_0000;
			*/

			/*
			PA = 0x64;
			PAC = 0x64;
			PAPH = 0x64;
			*/
		}
		else
		{
			PA.6 OUT,LOW;
			/*
			PA = 0B0100_0000;
			PAC = 0B0100_0000;
			PAPH = 0B0000_0000;
			*/

			/*
			PA = 0x64;
			PAC = 0x64;
			PAPH = 0x00;
			*/
		}
	}
}

void	Interrupt (void)
{
	pushaf;
	if (Intrq.T16)
	{	
		Intrq.T16	=	0;
	}
	popaf;
}


容易出现的问题

1、端口的设置错误。一开始并没有接触过单片机。然后寄存器的写法资料也比较少。全都是自己实践后才整理清楚该如何设置。相对其他的商家的芯片,入门的话我更喜欢应广的一点。
2、脚位的拉高拉低,输入输出模式。现在遇到的大部分灯脚位都是输出,上拉为打开。输出、下拉(或无)为关闭。需要明白到底是输出还是输入的模式。

  • 13
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会尽力回答你的问题。关于通过UDP传输音视频,我了解一些相关的知识,下面是一些学习笔记: 1. gstreamer是一个流媒体框架,用于创建、处理和播放多媒体流。它支持多种音视频格式,可以通过插件扩展功能。 2. 通过gstreamer可以使用UDP协议传输音视频数据。UDP协议是一种无连接的协议,不保证数据传输的可靠性和顺序性,但是传输效率高。 3. 首先需要创建一个gstreamer的pipeline,包括音视频源、编码器、UDP发送端等组件。例如: ``` gst-launch-1.0 -v filesrc location=test.mp4 ! decodebin ! x264enc ! rtph264pay ! udpsink host=192.168.1.100 port=5000 ``` 这个pipeline的作用是从test.mp4文件读取音视频流,解码后使用x264编码器进行压缩,然后使用rtph264pay将数据打包成RTP数据包,最后通过udpsink发送到指定的IP地址和端口。 4. 接收端需要创建一个gstreamer的pipeline,包括UDP接收端、解包器、解码器等组件。例如: ``` gst-launch-1.0 -v udpsrc port=5000 ! application/x-rtp, payload=96 ! rtpjitterbuffer ! rtph264depay ! avdec_h264 ! autovideosink ``` 这个pipeline的作用是从UDP端口5000接收音视频数据,使用rtpjitterbuffer解决网络抖动问题,使用rtph264depay将RTP数据包解包成原始的H.264数据流,然后使用avdec_h264解码器进行解码,最后使用autovideosink播放视频。 5. 在实际使用过程中,还需要考虑数据的带宽限制、网络延迟等问题,以保证音视频传输的效果。 希望这些笔记能对你有帮助。如果你还有其他问题,可以继续问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值