[KungFu8位 MCU]8位机普通外设开发总结,看看这些功能你会怎么用?

我使用的是20引脚的mcu,拿到的芯片的第一步是查看芯片手册和它有哪些资源;
 


 



最大频率只有16M,那也够用了豁
那我们就先把时钟配置一下,简单定时一下可以让芯片运行时间片吧
代码如下;
先配置晶振的两个引脚,让它激活一下晶振先;

      TR04 = 1;
      ANS04 = 0;
      PUR04 = 0;
      IOCL04 = 0;

      TR05 = 1;
      ANS05 = 0;
      PUR05 = 0;
      IOCL05 = 0;







再配置一下频率
 


OSCCTL =  0x075;  



再配置一下定时器;
T3CTL = 0x80;

T4REH = 0x07;

T4REL = 0XD0;

//使能中断
T3IF = 0;
T4IE = 1;
PUIE = 1;
AIE = 1;





在中断获取1ms时间标志;
// Interrupt Function High Enter
void int_fun0() __interrupt(0)
{

   
    if (T4IF)
    {
        T4IF = 0;
        flag1ms = TRUE;
      
    }

}







---------------2024年0807-------完成了定时器3的配置-----------------


当mcu需要通信的时候,就需要使用一种通讯方式来进行通讯,刚好这款mcu有串口通讯,那就先把串口配置一下吧


RSCTL1 = 0x00000090;

TSCTL1 = 0x00000022;
BRCTL1 = 0x00000040;
HBRG1 = 0x0001U;

B1RG16 = 0x0001U;




EUBRGL1 = 0x00000022;
EUBRGH1 = 0x00;










RC1IE = 0x0000U;
RC1IE = 0x0000U;










以上完成串口1的初始化程序,分别配置了要使用的串口模块
串口模块的接收器
串口模块的发送状态
串口模块的时钟频率



在发送数据时,只需要往寄存器TXSDR1里填充数据就可以;






现在我们已经有了串口发送和主时钟,就可以循环发送hello world了


通过重写c语言的库函数putc函数就可以使用printf函数了




int fputc(int ch, FILE* stream)
{

    TXSDR1 = ch;//严谨来说需要增加发送标志位,此处留个坑
    return ch;
}












串口波特率配置:
虽然波特率很简单,但是温故而知新嘛,先让我们看看波特率是个啥。。
在电子通信领域,波特(Baud)即调制速率,指的是有效数据讯号调制载波的速率,即单位时间内载波调制状态变化的次数。[1]
今天我只是在串口配置中使用了波特率转换,所以这篇文章就只限于串口的波特率配置啦,
对于波特率,按照我自己的理解的话,假如你设置的波特率为9600,则在1秒内的通讯速率则是1/9600bps/s,由于波特率本身就代表一种速率,1/9600只是换了一种更加直观的表达方式罢了,根据串口的数据帧结构,
               
                          帧结构:0位起始位+10位数据位+0位奇偶较验位+1位停止位=11位 (我自己设置的串口数据帧)

 


总的来说,配置好主频时钟,再到串口进行分频和倍频,通过所需波特率反算分频和倍频

-------------------------------------------------------


假设需要使用串口打印当前的温度值,就是需要使用温度传感器获取温度值,而mcu读不到温度值,只能通过模拟量来间接读取温度值;
所以需要以下的功能框架来读取温度值;
 




那么,假设温度传感器传出的电压范围在0-5v,那么可以采用adc采集电路来完成mcu对温度的采集,如下的示意图;
 


想想这个方案好像可可行,那么就可以开始配置mcu的ADC了

ADCCTL0 = 0x10000001;

ADCCTL1 = 0x01000100;
ADCCTL2 = 0x0001;

START = 1;





当需要获取adc值的时候,通过获取adc结果寄存器,直接获取数据;
ADCDATA0H和ADCDATA0L寄存器分别保存了adc的高位数据和地位数据




现在可以获取温度adc了,但是需要把adc转换成温度,就需要通过温度传感器的语言了,它读取温度的时候,会把温度转换成电压传给你,那么你就需要把相应的电压转换成adc,再转换成温度,查询温度传感器的数据手册就可以获取这个了;

现在可以获取温度之后,就可以再使用pwm来控制温度了;
比如如下框架:
 


当mcu通过串口获取到温度指令后,就发送pwm加热,当mcu读取到温度到达指令后,就停止pwm加热;这样就实现了一个简单的温度控制系统;
理论上可行的话,就配置一下pwm吧;;
---------------------
作者:uuguoleilei
链接:https://bbs.21ic.com/icview-3394850-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值