历史上的今天
今天是:2024年11月27日(星期三)
2019年11月27日 | STM8S103F3P6核心板学习笔记
2019-11-27 来源:eefocus
开发板与仿真器连接:

新建一个项目:
1-启动IAR,选择Project->Create New Projects…
2-选择C
3-然后选择路径并指定文件名,然后按Save保存
4-然后选Project->Options…设置项目属性
5-General options -> Target -> Device -> STM8S -> STM8S103F3P
6-Debugger -> Setup -> Driver -> ST-LINK
7-Debugger -> ST-LINK -> 选中Verify
编译运行项目:
1-选择Project -> Make,编译项目
(如果需要重新编译这个项目,可以选择Project -> Rebuild All)
2-选择Project -> Download and Debug, 把编译好的文件下载到电路板
3-选择Debug->Go运行程序
用IAR调试程序:
Toggle Breakpoint: 设置断点,程序运行到断点时会自动暂停
执行Download and Debug之后:
Go: 运行整个程序
Reset: 重置程序,回到第一行
Step over: 执行一条语句
View:
Disassembly: 显示C语言对应的汇编
Locals: 显示变量的值
Registers: 显示寄存器的值
Memory: 显示内存的内容
/***************************************************************************/
外部中断处理函数:(不是所有I/O都支持EXTI,reference manual P66)
外部中断设置:(头文件 #include 1-Px_CR2寄存器:enable Portx external interrupt 2-EXTI_CR1寄存器:设置触发条件(Page 70 of Reference manual) 3-打开全局中断:__enable_interrupt() -每组I/O口的中断号(IRQ number)都不同,Datasheet P43 -函数名可以任意。例如PORTA_EXTI_Handler() IAR语法: #pragma vector = 中断号+2 __interrupt void PORTA_EXTI_Handler(void) { } /***************************************************************************/ USB转串口于STM8连接:(把USB转串口上的跳线帽拨到3.3V处) 主要寄存器共12个,常用的有5个: UART_SR:保存串口控制器的状态 UART_DR:保存接收或者发送的数据 UART_CR2:设置串口模式 UART_BRR1:设置波特率(baudrate) UART_BRR2:设置波特率(baudrate) 其他:保持默认设置,即使用串口8-n-1模式 波特率具体取值可以计算,也可以参考Reference Manual的22.3.4节的Table 54 用特殊的语法定义,例如: #pragma vector = UART1_T_TXE_vector __interrupt void UART1_T_TXE_Handler(void) {} #pragma vector = UART1_R_RXNE_vector __interrupt void UART1_R_RXNE_Handler(void) {} 其中#pragma vector和__interrupt是固定的语法: UART1_T_TXE_vector指定这个中断处理函数是用来处理串口发送完毕中断 UART1_R_RXNE_vector指定这个中断处理函数是用来处理串口接收中断 UART1_T_TXE_vector和UART1_R_RXNE_vector在头文件iostm8s103f3.h中定义 UART1_T_TXE_Handler()和UART1_R_RXNE_Handler()函数名可以是任意 *中断处理函数的内容要尽可能的短小,以免影响主程序的运行 /**************************************************************/ 定时器的时钟频率可以设置: Timer1的时钟频率 = fCK_PSC / (PSCR[15:0]+1) Timer2/3的时钟频率 = fCK_PSC / 2^PSCR[3:0] Update Interrupt : 设置中断发生的周期:ARR(Auto-reload register) 中断发生频率 = 定时器频率 / (AAR+1) 产生中断的时间 = 1 / 中断发生频率 以Timer2为例,假设主频为16MHz TIM2_PSCR = 0x07; // psc=7 => prescaler=2^7 =128 => 定时器频率=16MHz/128=125KHz *退出中断前需要对相应的状态位清零。 
下一篇:STM8S重映射
史海拾趣
|
据国外媒体今日报道,美国市场分析机构Gartner表示,智能手机是今年手机市场增长最快的领域,今年第三季度的销量已经从2008年第四季度的超过3.18亿部增长至4.11亿部。 随着诺基亚及其Symbian OS手机的主导地位逐渐下滑,智能手机的市场竞 ...… 查看全部问答> |
|
换小型变压器初级线圈外引线时,漆包线不是太好上锡,请问有没有好的方法可以安全、牢固、方便的焊上外引线?初级线圈漆包线很细,焊上外引线后容易断裂,有没有好的方法固定?… 查看全部问答> |
|
一个复合型USB设备(包含HID类接口和其他类型接口). 已经写了一个CE驱动. 工作OK. 可是第一次插入该USB设备都要输入USB驱动名称. 请问能否象HID设备那样. 自动到注册表中找该驱动. 我想根据VID来找到这个驱动程序. 应该怎么做才好?… 查看全部问答> |
|
有谁买过特权同学设计的SF-NIOS2开发板?我最近使用发现存在缺陷 最近使用了配置芯片,但是.sof和。elf文件下载到芯片中,下电后然后上电,板子不运行。。在CPU中已近把复位向量还成了epcs控制器,异常向量改成了SDRAM````````````````````````现在这个板子都已近下架了,找不到售后了,我擦,悲剧。。。花了我480 ...… 查看全部问答> |




