本帖最后由 uuguoleilei 于 2024-8-17 22:54 编辑
#申请开发板# #技术资源# #每日话题# #有奖活动# #申请原创#@21ic小跑堂
我使用的是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吧;
----------------------20240817,MIN-------------------------------------------------------
|
@21小跑堂:感谢建议,一定抽出时间做出修改排版
8位单片机学习笔记,对一些常见外设进行开发记录。文章排版较为混乱,可读性较差,建议作者后续加强文章的排版管理。较好的排版和舒适的阅读体验有助于提升打赏额度哦。